我是网络编程新手,刚开始学习简单的编程。我的机器上运行着两个简单的 Python 脚本,一个服务器和一个客户端,客户端使用端口 80 发送一些数据,服务器监听端口 80 并打印数据,并用简单的“ACK”进行应答,这样就可以正常工作了。但是当服务器收到数据时,它会从随机端口获取数据。但是,如果我更改客户端上的发送端口或服务器上的监听端口,它就会停止工作。我不明白它是如何工作的。
这是客户端脚本
import socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(("127.0.0.1",80))
c.send("TEST Message".encode())
r = c.recv(200)
print (r.decode())
这是服务器
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0",80))
server.listen(5)
# this is our client-handling thread
def handle_client(client_socket):
# print out what the client sends
request = client_socket.recv(1024)
print ("[*] Received: %s" % request.decode())
# send back a packet
client_socket.send("ACK!".encode())
client_socket.close()
while True:
client,addr = server.accept()
print ("[*] Accepted connection from: %s:%d" % (addr[0],addr[1]))
# handle incoming data
handle_client(client)
这是运行客户端时服务器的答案
[*] Accepted connection from: 127.0.0.1:56400
[*] Received: TEST Message