2:UDP编程
TCP是建立可靠连接 并且通信双方都可以以流的形式发送数据 相对TCP UDP则是面向无连接的协议
使用UDP协议的时候 不需要建立连接 只需要知道对方的IP地址和端口号 就可以直接发送数据包。但是 能不能到达就不知道了
虽然使用UDP传输数据不可靠 但是他的优点是和TCP相比 速度快 对于不要求可靠到达的数据 就可以使用UDP协议
和TCP类似 使用UDP协议也分为客户端和服务器 服务器首先需要绑定端口:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定端口
s.bind('127.0.0.1',9999)
创建socket时 SOCK_DGRAM指定这个socket的类型是UDP 绑定端口和TCP是一样的 但是不需要listen()方法 而是直接接受来自任何客户端的数据
print 'Bind UDP on 9999'
while True:
#接受数据
data,addr=s.recvfrom(1024)
print 'Received from %s:%s' % addr
s.sendto('Hello,%s' %data,addr)
recvfrom()方法返回数据和客户端地址 这样 服务器收到数据后 直接调用sendto() 就可以把数据发送给客户端了
在这里省略了多线程 是一个很简单的例子
客户端使用UDP时 首先仍然创建基于UDP的socket 然后不予要调用connect() 直接通过sendto()给服务器 发送数据
s=socket.socket(socket.AF_INET,socket.SOCK_DGARM)
for data in ['lc','xxb','xxw']
s.sendto(data,('127.0.0.1',9999))
print s.recv(1024)
s.close()