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

1.服务器端

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

image

补充下,第四步:不必使用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()

结果:

客户端

image

服务器端:

image

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

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

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

原文地址:https://www.cnblogs.com/menghuizuotian/p/3764693.html