我想创建一个小型TCP服务器,它将来自通过以太网连接的设备的传入TCP连接传送到我的计算机。
该物理端口具有静态分配给它的IP 192.168.1.100
。
我用作客户端和服务器的脚本列在底部。
如果我想在python脚本之间发送消息,则设置有效。但是,我无法从外部设备接收任何内容(下面的Wireshark截图截图)。根据我的阅读,我可以通过定义其IP来定义要监听的接口。所以我将接口的IP定义为host
变量。但是,我的脚本中没有收到任何内容,而是其他脚本发送的消息。我stackoverflow已经有了类似的情况。我认为定义正确的IP作为主机可以解决这个问题,但事实并非如此。
我也很难用Wireshark捕获两个脚本之间的流量。他们没有出现在任何地方。
我需要在eth0
界面上使用静态IP 192.168.1.100
获取这些连接:
tcp_server.py
import socket
# create a socket object
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
# host = socket.gethostname()
host = "192.168.1.100"
port = 9002
# bind to the port
serverSocket.bind((host, port))
# queue up to 5 requests
serverSocket.listen(5)
while True:
# establish a connection
clientSocket, addr = serverSocket.accept()
print("Got a connection from %s" % str(addr))
msg = 'Thank you for connecting' + "\r\n"
clientSocket.send(msg.encode('ascii'))
clientSocket.close()
这是一个客户:
tcp_client.py
import socket
# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
# host = socket.gethostname()
host = "192.168.1.100"
port = 9002
# connection to hostname on the port.
s.connect((host, port))
# Receive no more than 1024 bytes
msg = s.recv(1024)
s.close()
print(msg.decode('ascii'))