Python3 TCP服务器无法看到来自外部设备的传入消息

时间:2018-06-15 15:16:46

标签: python python-3.x tcp wireshark tcpserver

我想创建一个小型TCP服务器,它将来自通过以太网连接的设备的传入TCP连接传送到我的计算机。

该物理端口具有静态分配给它的IP 192.168.1.100

我用作客户端和服务器的脚本列在底部。

如果我想在python脚本之间发送消息,则设置有效。但是,我无法从外部设备接收任何内容(下面的Wireshark截图截图)。根据我的阅读,我可以通过定义其IP来定义要监听的接口。所以我将接口的IP定义为host变量。但是,我的脚本中没有收到任何内容,而是其他脚本发送的消息。我stackoverflow已经有了类似的情况。我认为定义正确的IP作为主机可以解决这个问题,但事实并非如此。

我也很难用Wireshark捕获两个脚本之间的流量。他们没有出现在任何地方。

我需要在eth0界面上使用静态IP 192.168.1.100获取这些连接:

enter image description here

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'))

0 个答案:

没有答案