python编写UDP套接字
1. 什么是套接字?
套接字是连接应用层和运输层的通道,运输层最长用的协议是UDP和TCP。如图为TCP/IP五层结构。

2. UDP套接字代码。
UDPClient客户端:
from socket import * hostname = input("输入主机地址") # 从用户获取需要通信的地址 serverName = hostname serverPort = 12000 # 指定端口为12000 clientSocket = socket(AF_INET, SOCK_DGRAM) # 创建套接字,AF_INET表示ipv4,SOCK_DGRAM表示套接字的类型为UDP message = input("输入小写字母") # 需要从键盘获取小写字母 clientSocket.sendto(message.encode(), (serverName, serverPort)) # 发送套接字,并将message转为字节发送 # 接收到的报文被放在modifiedMessage下,报文的ip地址和端口号放在serverAddress下 modifiedMessage, serverAddress = clientSocket.recvfrom(2048) file1 = open("C:\\Users\\Administrator\\Desktop\\123.txt", mode = "a") # 打开一个文本文件,mode=a表示在原有的文本后面添加新的内容 print("\n" + modifiedMessage.decode(), file = file1) # 将接收到的报文内容输出到指定的文件中 clientSocket.close() # 关闭套接字
UDPServer服务器端:
from socket import * serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) # 创建套接字serverSocket,AF_INET表示ipv4,SOCK_DGRAM表示套接字的类型为UDP serverSocket.bind(("", serverPort)) # 将端口12000绑定到套接字,所有12000端口收到的报文都被套接字处理 print("The server is ready to receive") # 用while循环一直接收报文 while True: message, clientAddress = serverSocket.recvfrom(2048) # 接收到的报文被放在message下,报文的ip地址和端口号放在clientAddress下 modifiedMessage = message.decode().upper() # 将接收到的报文转为字符串的形式并转换成大写储存到modifiedMessage下 serverSocket.sendto(modifiedMessage.encode(), clientAddress) # 转成字节的形式发往服务器的套接字,方便客户端接收
3.运行
首先客户端需要创建指定的文件,为了有明显的效果可以随意写上一些东西。

在服务器端启动UDPServer.py

win+R输入cmd,ipconfig,查看服务器端的ip地址,注意:此实验需要在一个局域网内进行。


在客户端启动UDPClient.py,输入服务器端的ip地址和需要转化为大写的字母。

打开文本可以看到出现了hello的大写。
