《计算机网络自顶向下》Socket编程 Lab热手工作 UDP TCP 客户-服务器编程


前引


各位看官好 昨天晚上因为想试一下socket编程 然后我就把我们家另一台电脑搬出来了 结果三年前的电脑真的用不了了 我下载pycharm 然后打开 每一次点击操作都会卡5分钟左右 然后折腾了一晚上都没有办法弄

之后晚上又摇了一个我的好姐妹 试一下远程主机的通信 结果试了两个小时也没有成功 但是呢 本地的话就可以 我还在那里试了很久 我认为是防火墙的问题- - 公网私网试到了凌晨1点半左右 成功不了 所以下面的IP地址 就用127.0.0.1来代替 各位谅解一下 就直接用本地本机测试IP吧


UDP C-S 交互编程


UDP Client代码


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

UDP Server代码


from socket import *
serverPort = 2333
serverSocket = socket(AF_INET,SOCK_DGRAM)
serverSocket.bind(('0.0.0.0',serverPort))
print("The server is ready to receive")
while True:
    message, clientAddress = serverSocket.recvfrom(2048)
    modifiedMessage = message.decode().upper()
    print("yes")
    serverSocket.sendto(modifiedMessage.encode(),clientAddress)

UDP交互 测试结果


在这里插入图片描述


TCP C-S 交互编程


TCP Client代码


from socket import *
serverName = '127.0.0.1'
serverPort = 23333
clientSocket = socket(AF_INET,SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = input('input lowercase sentense:')
clientSocket.send(sentence.encode('utf-8'))
modifiedMessage = clientSocket.recvfrom(1024)
print(str(modifiedMessage[0],'utf-8'))
clientSocket.close()

TCP Server代码


from socket import *
serverPort = 23333
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('0.0.0.0',serverPort))
serverSocket.listen(1)
print("The server is ready to receive")
while True:
    connectionSocket, addr = serverSocket.accept()
    sentense = connectionSocket.recv(1024).decode('utf-8')
    print("yes")
    retsentense = sentense.upper()
    connectionSocket.send(retsentense.encode('utf-8'))
    connectionSocket.close()

TCP 交互测试结果


在这里插入图片描述