月度归档:2011年08月

多线程编程中Socket编程的问题(一)

网上介绍Python Socket编程的很多,我也曾写了个例子。但是这些大多是单线程的,而且也是阻塞式的操作。
这有什么问题呢?就是当你在执行socketObj.recv(1024) 时,如果没有接收到数据,那么它将持续等待直到超时。
在多线程编程的情况下,你就会发现,程序总是在等待接收数据,而其他应该完成的操作却没有动,
在这样的情况下,建立Socket的时候加上socketObj.setblocking(0),就可以编程非阻塞式的监听端口了。

Linux下查看网卡设置信息

【一句话】Linux下可以通过ethtool和ifconfig命令直接查看网卡信息。

举例:
[root@dl380 ~]# ethtool eth0
Settings for eth0:
 Supported ports: [ TP ]
 Supported link modes:   10baseT/Half 10baseT/Full
                         100baseT/Half 100baseT/Full
                         1000baseT/Full
 Supports auto-negotiation: Yes
 Advertised link modes:  10baseT/Half 10baseT/Full
                         100baseT/Half 100baseT/Full
                         1000baseT/Full
 Advertised auto-negotiation: Yes
 Speed: 1000Mb/s
 Duplex: Full
 Port: Twisted Pair
 PHYAD: 1
 Transceiver: internal
 Auto-negotiation: on
 Supports Wake-on: g
 Wake-on: g
 Link detected: yes
[root@dl380 ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 98:4B:E1:0B:F4:EE 
          inet addr:10.56.249.239  Bcast:10.56.249.255  Mask:255.255.255.128
          inet6 addr: fe80::9a4b:e1ff:fe0b:f4ee/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:75657591 errors:0 dropped:0 overruns:0 frame:0
          TX packets:185444588 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13823403493 (12.8 GiB)  TX bytes:34495531568 (32.1 GiB)
          Interrupt:169 Memory:f4000000-f4012100