【问题标题】:How can I write a client/server program running on an Ethernet interface?如何编写在以太网接口上运行的客户端/服务器程序?
【发布时间】:2021-10-17 16:02:18
【问题描述】:

我正在尝试编写一个 Python 二进制解码器/编码器,我一直在努力弄清楚当它在 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()

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

【问题讨论】:

    标签: python ethernet


    【解决方案1】:

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

    因此,请将 host='localhost' 替换为 host='0.0.0.0' 以使其绑定到所有地址,或者将其绑定到特定 IP 地址。

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

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

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

    【讨论】:

    • 谢谢,就是这样。我只需要用那个或 IPv4 地址替换主机。知道了。无法投票,因为我没有 15 声望
    猜你喜欢
    • 2013-07-10
    • 2016-07-23
    • 2015-08-22
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多