TCP/UDP套接字实践

整个流程是客户端想服务端发信息,服务端返回大写后的消息
从代码中可以看出UDP与TCP的差异:
UDP是将数据丢进套接字之前,必须为分组指定目的地址
TCP是client向服务端申请连接,会有一个欢迎的套接字,即代码中的serverSocket,之后服务端会为客户创建一个专门的连接套接字,即connectionSocket,用于通信
其中clientSocket = socket(AF_INET, SOCK_DGRAM)
就是创建socket第一个参数指明底层网络使用IPV4,第二个参数说明是SOCK_DGRAM是UDP连接,SOCK_STREAM是TCP连接

UDP

client.py

from socket import *
serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Input lowercase sentence:') 
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print(modifiedMessage)
clientSocket.close()

server.py

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print('the server id ready to receive')
while True:
    message, clientAddress = serverSocket.recvfrom(2048)
    modifiedMessage = message.upper()
    serverSocket.sendto(modifiedMessage, clientAddress)

TCP
client.py

from socket import *
serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
message = input('Input lowercase sentence:')
print(type(message))
clientSocket.send(message.encode())
modifiedMessage = clientSocket.recv(2048)
print('from Server : ', modifiedMessage)
clientSocket.close()

server.py

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print('The server is ready to receive')
while 1:
    connectionSocket, addr = serverSocket.accept()
    sentence = connectionSocket.recv(1024)
    capitalizedSentence = sentence.upper()
    connectionSocket.send(capitalizedSentence)
    connectionSocket.close()

猜你喜欢

转载自blog.csdn.net/qq_32635069/article/details/79704128