python网络编程 之udp通信

#encoding=utf-8
# ss = socket() # 创建一个服务器套接字
# ss.bind() # 绑定服务器套接字
# inf_loop: # 服务器无限循环
# cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
# ss.close() # 关闭服务器套接字

# 创建一个能接收客户的消息,在消息前加一个时间戳后返回的 UDP 服务器
from socket import *
from time import ctime

host = ''
port = 21567
bufsiz = 1024
addr = (host,port)

udpServerSock = socket(AF_INET,SOCK_DGRAM)
udpServerSock.bind(addr)


while True:
    print 'waiting for message'
    data,addr2 = udpServerSock.recvfrom(bufsiz)
#     s.recvfrom(bufsize[.flag])
# 接受UDP套接字的数据。与recv()类似,但返回值是(data,address)。
# 其中data是包含接收数据的字符串,address是发送数据的套接字地址。
    print 'received from ',addr2
    udpServerSock.sendto('[%s] %s' % (ctime(),data),addr2)
# s.sendto(string[,flag],address)
# 发送UDP数据。将数据发送到套接字,
# address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
    print 'send to ',addr2

udpServerSock.close()

 

 

 


 

cs = socket() # 创建客户套接字
comm_loop: # 通讯循环
cs.sendto()/cs.recvfrom() # 对话(发送/接收)
cs.close() # 关闭客户套接字

 

#encoding=utf-8
# cs = socket() # 创建客户套接字
# comm_loop: # 通讯循环
# cs.sendto()/cs.recvfrom() # 对话(发送/接收)
# cs.close() # 关闭客户套接字

# 创建一个 UDP 客户端,程序会提示用户输入要传给服务器的信息,显示服务器返回的加了时间
# 戳的结果。
from socket import *

host = 'localhost'
port = 21567
bufsiz = 1024
addr = (host,port)

udpClientSock = socket(AF_INET,SOCK_DGRAM)

while True:
    data = raw_input('>')
    if not data:
        break
    udpClientSock.sendto(data,addr)
    data,addr = udpClientSock.recvfrom(bufsiz)
    if not data:
        break
    print data
udpClientSock.close()

 

posted @ 2016-09-01 15:51  zdmlcmepl  阅读(494)  评论(0编辑  收藏  举报