python的TCP/UDP
tcpServer.py#!/usr/bin/pythonimport socket, syshost = ''#bind to all interfacesport = 1987s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_R
·
tcpServer.py
#!/usr/bin/python
import socket, sys
host = '' #bind to all interfaces
port = 1987
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(4)
print "Server is running on port %d" % port
while 1:
try:
clientsock, clientaddr = s.accept()
except KeyboardInterrupt: # Press "Ctrl + C" to quit
print "Quit"
sys.exit(1)
print "connection from ", clientaddr
msg = clientsock.recv(1024)
if not msg:
break
clientsock.sendall("Received " + msg)
clientsock.close()
s.close()
tcpClient.py
#!/usr/bin/python
import socket, sys
port = 1987
host = "localhost"
#host = sys.argv[1]
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((host,port))
except socket.error:
print "Error connecting server %s " % host
sys.exit(1)
s.sendall("I am client")
while 1:
buf = s.recv(2048)
if not len(buf):
break
print buf
#sys.stdout.write(buf)
s.close()
requestUrl.py
import urllib, sys
f = urllib.urlopen(sys.argv[1])
while 1:
buf = f.read(2048)
if not len(buf):
break
print buf
#sys.stdout.write(buf)
UDP通信不能保证一个消息包能够被成功发送,有些防火墙也会组织UDP通信
udpServer.py
#!/usr/bin/python
import socket, sys
host = '' #bind to all interfaces
port = 1987
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
print "Server is running on port %d" % port
while 1:
try:
msg, remote_addr = s.recvfrom(1024)
except KeyboardInterrupt: # Press "Ctrl + C" to quit
print "Quit"
sys.exit(1)
if not msg:
break
s.sendto("Received " + msg, remote_addr)
s.close()
udpClient.py
#!/usr/bin/python
import socket, sys
textport = "1987"
host = "localhost"
#host = sys.argv[1]
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
port = int(textport)
except ValueError:
print "Ettot port"
port = socket.getservbyname(textport, 'udp')
s.connect((host, port))
s.sendall("I am client")
while 1:
buf = s.recv(2048)
if not len(buf):
break
print buf
#sys.stdout.write(buf)
s.close()
socket异常包含下面几种
1,与一般I/O和通信问题有关的socket.error
2,与查询地址信息有关的socket.gaierror
3,与其他地址错误有关的socket.herror
4,设置超时后的超时错误socket.timeout
更多推荐
已为社区贡献2条内容
所有评论(0)