python 网络编程(四)---UDP服务端客户端

1.服务器端

UDP服务器建立与TCP相类似,具体比较如下:

python 网络编程(四)---UDP服务端客户端

补充下,第四步:不必使用listen还有accept函数。

具体代码如下:(设置socket选项省略)

import socket
from time import ctime HOST=''
PORT=21004
BUFSIZE=1024 udpSerSock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #建立socket
udpSerSock.bind((HOST,PORT)) #将socket与端口绑定,这个端口是连接客户端与服务器 while True:
print 'waiting for message...'
data, addr = udpSerSock.recvfrom(BUFSIZE)
udpSerSock.sendto('[%s] %s'%(ctime(),data),addr)
print '...received from and returned to:',addr
print ctime(),' ',data
udpSerSock.close()

2.客户端

1)SOCK_DGRAM

2)因为UDP是无连接的,没有使用connect函数,我们无法知道数据是否已经发送结束。

import socket
HOST ='localhost'
PORT = 21004
BUFSIZE =1024 udpCliSock =socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 建立UDP socket while True:
data=raw_input('Enter a string that you want to send: ')
if not data:
break
udpCliSock.sendto(data,(HOST,PORT)) # 发送到服务器端口
data,(HOST,PORT)=udpCliSock.recvfrom(BUFSIZE) # 接收服务器数据
if not data:
break
print data
udpCliScok.close()

结果:

客户端

python 网络编程(四)---UDP服务端客户端

服务器端:

python 网络编程(四)---UDP服务端客户端

由上图再结合TCP结果,可以发现每次客户端发送数据给服务器后,(客户端会进行检查吗?),服务器只管收到数据,并返回给客户端,不管对方接收到了没有,都只进行接收下一段数据。(waiting for message…)

参考:http://www.cnblogs.com/xiao*/archive/2012/08/06/2625509.html

http://blog.sina.com.cn/s/blog_6b60259a0101ftxx.html

上一篇:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件


下一篇:13.app后端为什么要用到消息队列