You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Socket函数无法识别主机名的问题求助

解决客户端连接类IRC服务器时的主机名未定义问题

看起来你踩了一个很常见的Python字符串使用坑!错误提示“(my device name) is not defined”说明你在客户端代码里把设备名称当成了变量,而不是字符串传递给socket的连接方法了——Python会试图去找名为这个设备名的变量,但你根本没定义过它,所以报错。

下面给你几个可行的修改方案:

方案1:用字符串包裹设备名称

直接把服务器的设备名用双引号或单引号括起来,作为字符串参数传入connect()方法。比如你的设备名是MyDesktop,客户端代码应该写成这样:

import socket

client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 关键:把主机名放在引号里,告诉Python这是字符串
client_sock.connect(("MyDesktop", 12345))  # 替换成你服务器用的端口号

方案2:用IP地址替代主机名(更可靠)

有时候主机名解析可能出问题,直接用服务器的IP地址会更稳定。你可以在服务器端运行socket.gethostbyname(socket.gethostname())获取它的本地IP,然后客户端直接用这个IP连接:

# 客户端示例
client_sock.connect(("192.168.3.10", 12345))  # 替换成你的服务器IP和端口

方案3:本地测试用localhost

如果只是在同一台机器上测试客户端和服务器,直接用"localhost"或者"127.0.0.1"是最省心的,完全不用管设备名:

client_sock.connect(("localhost", 12345))

额外验证提示

别忘了确认你的服务器代码是正确绑定地址的,比如服务器应该这样写:

import socket

server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 12345
server_sock.bind((host, port))  # 绑定到设备名对应的地址
server_sock.listen(5)

如果要让服务器能被局域网内其他设备访问,可以把绑定地址改成"0.0.0.0",这样服务器会监听所有可用的网络接口。

内容的提问来源于stack exchange,提问作者Kurbus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:12:37