python编写的UDP客户端和TCP客户端相差不大,我们需要做简单的修改,将数据包以UDP的格式发出。UDP服务器书上并没有给出,我参考了一些网上的代码。
UDP客户端:
#!/usr/bin/env python
#-- coding:utf-8 --
import socket
target_host = "0.0.0.0"
target_port = 8888
#建立一个socket对象
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#发送一些数据
client.sendto("AAABBBCCC",(target_host,target_port))
#接收一些数据
data, addr = client.recvfrom(4096)
print data
UDP服务器:
#!/usr/bin/env python
#-- coding:utf-8 --
import socket
import threading
from time import ctime
#绑定服务器所要监听的IP地址和端口
HOST = "0.0.0.0"
PORT = 8888
#这里需要将传输改为UDP
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#启动监听
server.bind((HOST,PORT))
#server.listen(5)
print "[*] listen on %s:%d" % (HOST,PORT)
#客户处理线程
def handle_client(data, client_socket):
request = client_socket.recvfrom(1024)
print "[*] Received: %s" % request
client_socket.sendto("[ACK!]",(HOST,PORT))
client_socket.close()
while True:
client,addr = server.recvfrom(1024)
print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1])
#挂起客户端线程,处理传入的数据
client_handler = threading.Thread(target=handle_client,args=(client,server))
client_handler.start()
经过测试,可以成功连接。