【问题标题】:communication between two computers via Python socket in a LAN failed局域网中两台计算机通过 Python 套接字进行的通信失败
【发布时间】:2015-10-12 09:42:14
【问题描述】:

局域网中的两台电脑连接到无线路由器,一台IP地址是192.168.1.106(服务器),另一台是192.168.1.107(客户端),两台电脑的网关都是192.168.1.1(路由器本身) .

两台计算机可以在两个方向上相互ping通,这意味着路由和路由器本身应该没有问题。但是当我尝试使用 Python UDP 套接字时失败了,服务器无法从客户端获取任何信息,当我更改 IP 地址时也发生了同样的情况。 (但是当服务器和客户端使用本地IP地址在同一台计算机上时它工作正常,所以代码应该没问题)

我正在使用以下代码:

服务器:

import socket

address = ('192.168.1.106', 5678) # the server listening on address 192.168.1.106
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)

while True:
    data, addr = s.recvfrom(2048)
    if data == "empty":
        print "no data from client"
    else:
        print "received:", data, "from", addr

s.close()

客户:

import socket

address = ('192.168.1.106', 5678)  # the client send to address 192.168.1.106
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:
    msg = raw_input()
    if not msg:
        msg = "empty"
    s.sendto(msg, address)

s.close()

【问题讨论】:

    标签: python sockets networking udp


    【解决方案1】:

    您是否在两台计算机的防火墙上都打开了 UDP 端口?

    【讨论】:

    • 是的,当然,防火墙允许任何类型的流量
    • 1) 关闭两个防火墙并进行测试。
    • 2) 发送一个非常小的数据报。也许它正在下降。
    猜你喜欢
    • 2012-07-06
    • 1970-01-01
    • 2012-02-28
    • 2012-05-01
    • 2018-02-23
    • 2012-06-07
    • 2017-05-08
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多