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的大写。

 

posted @ 2021-01-18 11:12  驴行者  阅读(264)  评论(0)    收藏  举报