如何在以太网接口上编写 client/server 程序 运行?

How can I write a client/server program running on an Ethernet interface?

我正在尝试编写 Python 二进制文件 decoder/encoder 并且我一直在努力弄清楚如何在像 eth0 这样的以太网接口上 运行 时编写它。这是我目前在客户端的代码:

import socket
port = 8888
host = 'localhost'
my_tuple = (host, port)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(my_tuple)
server_socket.listen() 
client, address = server_socket.accept()
print("Connection from ", address)
message = client.recv(1024)
message = ' '.join('{0:08b}'.format(ord(i), 'b') for i in message.decode())
client.close()

有什么方法可以在以太网接口上实现这个 运行 吗?

如果已连接,您的以太网接口(eth0 或其他)可能会关联一个 IP 地址。尝试绑定到 0.0.0.0 或 $IP 地址。

因此,将 host='localhost' 替换为 host='0.0.0.0' 以便它绑定到所有地址,或者,让它绑定到特定的 IP 地址。

Localhost 是一个 loopback 地址,因此只有 same 机器上的客户端才能与监听 localhost 的程序对话。这通常用于内部守护进程、测试。

0.0.0.0 告诉内核监听与给定机器关联的 所有 个 IP 地址。

单独指定一个 IP 地址指示内核侦听特定 地址。如果您收听本机没有的地址,此调用将失败。