程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python 套接字连接无法通过本地网络大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python 套接字连接无法通过本地网络?

开发过程中遇到Python 套接字连接无法通过本地网络的问题如何解决?下面主要结合日常开发的经验,给出你关于Python 套接字连接无法通过本地网络的解决方法建议,希望对你解决Python 套接字连接无法通过本地网络有所启发或帮助;

我正在尝试使用 Python 中的 Socket 模块让两台计算机(我的 PC 和我的笔记本电脑)通过本地网络进行通信。

这是在我的 PC 上运行的服务器端代码(通过 LAN 连接):

import socket

HOST = '192.168.1.3' #local PC IP
print(HOST)
PORT = 8080        # Port to Listen on (non-privileged ports are > 1023)

with socket.socket(socket.AF_INET,socket.soCK_STREAM) as s:
    s.bind((HOST,PORT))
    s.Listen()
    conn,addr = s.accept()
    with conn:
        print('Connected by',addr)
        while True:
            data = conn.recv(1024)
            print(data)
            if not data:
                break
            conn.sendall(data)

这是客户端代码,在我的笔记本电脑上运行(通过 WiFi 连接):

import socket


TCP_IP = '192.168.1.3'
TCP_PORT = 8080
BUFFER_SIZE = 1024

messaGE = b"Hello,World!"

s = socket.socket(socket.AF_INET,socket.soCK_STREAM)

s.connect((TCP_IP,TCP_PORT))

s.send(messaGE)

data = s.recv(BUFFER_SIZE)

s.close()

print("received data:",data)

事情是:当我执行这两个代码时,服务器端保持空闲等待连接和客户端,一段时间后停止并返回以下超时错误:

TraceBACk (most recent call last):
  file "C:\Users\...\clIEnt.py",line 13,in <module>
    s.connect((TCP_IP,TCP_PORT))
TimeoutError: [WinError 10060] A connection attempt Failed because the connected party dID not properly respond after a period of time,or established connection Failed because connected host has Failed to respond

如果我在与服务器相同的机器上执行客户端代码,即使我运行 netstat -an CMD 我可以看到在那个端口上监听的计算机:

TCP    192.168.1.3:8080       0.0.0.0:0              ListENING

我认为它与端口转发有关,所以我尝试使用它,但我也遇到了问题(端口似乎仍然关闭)。

我真的不知道接下来要做什么,如果您有什么建议或知道我可以尝试的其他事情,请回复。

解决方法

您正在侦听并连接到同一个 IP - 您需要在服务器上侦听客户端的 IP(或任何具有正确端口号的 IP)并连接到客户端上的服务器 IP。

例如,如果客户端的 IP 是 1.2.3.4,服务器的 IP 是 1.2.3.5,则

# server side
s.bind(('1.2.3.4',8080))  # CLIENT_IP = '1.2.3.4'; PORT = 8080

# can also be s.bind(('0.0.0.0',8080)) if you don't have anything else connecTing
# to this port on the server.
# client side
s.connect(('1.2.3.5',8080))  # SERVER_IP = '1.2.3.5'; PORT = 8080
,

这实际上是一个防火墙问题,我只需要为本地网络禁用 Windows Defender 防火墙,现在一切正常

大佬总结

以上是大佬教程为你收集整理的Python 套接字连接无法通过本地网络全部内容,希望文章能够帮你解决Python 套接字连接无法通过本地网络所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Python