本文作于2022.1.25,供本人加深记忆
我们将使用下列简单的客户-服务器应用程序来演示对于UDP和TCP的套接字编程:
①客户从其键盘读取一行字符(数据)并将该数据向服务器发送。
②服务器接收该数据(sentence)并将这些字符转换为大写。
③服务器将修改的数据(modified sentence)发送给客户。
④客户接收修改的数据并在其显示器(monitor)上将该行显示出来。
一、UDP套接字编程
图2-26着重显示了客户和服务器的主要与套接字相关的活动,两者通过UDP运输服务进行通信。 客户程序将被称为UDPClient. py,服务器程序被称为UDPServer. pyo为了强调关键问题,我们有意提供最少的代码。“好代码”无疑将具有更多辅助性的代码行,特别是用于处理岀现差错的情况。对于本应用程序,我们任意选择了114514作为服务器的端口号。
1.UDPCIient.py
from socket import *
serverName = "hostname"
serverPort = 114514
clientsocket = socket(AF_INET, SOCK_DGRAM)
message = raw_input("Input lowercase sentence:")
clientSocket.sendto(message.encode(),(serverName,serverPort))
modifiedMessage, serverAddress = clientsocket.recvfrom(2048)
print (modifiedMessage.decode())
clientSocket.close ()
UDPCIient.py完整代码
逐行分析
from socket import *
该socket模块形成了在Python中所有网络通信的基础。包括了这行,我们将能够在程序中创建套接字。
serverName = ‘hostname’
在这里我们可以提供包含服务器IP地址或者主机名的字符串,如果是主机名的话将自动执行DNS lookup从而获得IP地址
serverPort = 114514
将整数变量serverPort,即服务器端口设置为114514
clientsocket = socket(AF_INET, SOCK_DGRAM)
该行创建了客户的套接字,称为clientSocket第一个参数指示了地址簇;第二个参数指示了该套接字是SOCK.DGRAM类型(数据报datagram)的,这意味着它是一个UDP套接字
message = raw_input('Input l