首页 > 解决方案 > 试图在 python 中创建一个带有套接字的服务器

问题描述

我正在尝试用 Python 制作一个聊天应用程序,但遇到了一些麻烦。我创建了一个服务器,可以使用本地 IP 地址成功连接。但是,当我尝试使用我的公共 IP 地址在另一台设备上连接到它时,似乎超时,没有发生错误,并且它一直在尝试连接。

编辑:我已经为我的 IPv4 地址设置了端口转发。并且客户端正在使用公共 IP。

服务器.py:

import socket

s = socket.socket()
host = socket.gethostbyname(socket.gethostname())
port = 2000
s.bind((host, port))
print("Server started, waiting for incoming connections")

s.listen(5)
connection, address = s.accept()

print("New connection from", address)

while True:
    data = connection.recv(1024).decode()
    print("received:", data)
    ret = data + "+++++++"
    connection.send(ret.encode())

客户端.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = #my public ip address from whatsmyip.com
port = 2000
s.connect((host, port))
print("Connected.")

while True:
    message = input("msg: ")
    s.send(message.encode())
    data = s.recv(1024).decode()
    print(data)

标签: pythonsocketsnetworking

解决方案


那么,首先,您的服务器是否在与其他设备的网络中?如果您在那里有路由器,那么您在 whatsmyip.com 中看到的 IP 是路由器的 IP,而不是您计算机的 IP。所以你会试图连接到它。

您可以使用命令netstat进行检查。


推荐阅读