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

同网络两台Ubuntu笔记本搭建C语言Telnet聊天服务器的IP端口选择

同一局域网下两台Ubuntu设备配置聊天服务器的完整指南

嘿,我来帮你搞定这个跨设备通信的问题!当你要在两台不同的Ubuntu笔记本间跑聊天服务器时,核心就是跳出localhost的回环限制,让服务器能接收局域网内其他设备的连接请求。下面一步步给你拆解:

1. 找到服务器的局域网IP地址

你不能再依赖127.0.0.1了——这个地址只会指向本机。要获取服务器在局域网内的真实私有IP:

  • 打开服务器端终端,运行命令:ip addr show,找到你的网卡(无线是wlan0,有线一般是eth0或enpXsY),查看inet字段后对应的地址,格式通常是192.168.x.x或10.x.x.x。
  • 嫌麻烦的话,直接用hostname -I(注意是大写的I),它会直接输出你的局域网IP。

关键提醒:千万别用公网IP!我们只需要局域网内的私有IP地址。

2. 选个合适的端口号

端口是服务器接收连接的“门牌号”,选的时候注意这几点:

  • 避开1-1023区间的端口——这些是系统保留端口,需要root权限才能使用,还容易和系统自带服务冲突。
  • 优先选1024-65535之间的未被占用端口,比如常用的8080、9000、12345都很合适。
  • 检查端口是否被占用:运行sudo lsof -i :你的端口号,如果没有输出就说明端口可用;或者用ss -tuln | grep 你的端口号验证。

3. 配置防火墙放行端口

Ubuntu默认启用ufw防火墙,必须放行你选的端口,否则客户端根本连不上:

  • 运行命令开放TCP端口(聊天服务器一般用可靠的TCP协议):sudo ufw allow 你的端口号/tcp
  • 可以用sudo ufw status确认规则是否已经生效。

4. 修改C语言服务器代码的绑定规则

你的服务器代码里,bind()函数不能只绑定到127.0.0.1,要改成监听所有可用的网络接口:

struct sockaddr_in server_addr;
// ... 其他socket初始化代码
server_addr.sin_addr.s_addr = INADDR_ANY; // 核心修改:绑定到所有网络接口

这样服务器就能接收来自局域网内任何设备的连接请求了。

5. 客户端连接方式

客户端要连接服务器的局域网IP和你指定的端口,而不是localhost。比如用telnet测试的话,在客户端终端运行:

telnet 192.168.1.100 9000

把192.168.1.100换成你的服务器局域网IP,9000换成你选的端口号。

常见问题排查

  • 确保两台设备在同一局域网(比如连同一个WiFi或同一个有线交换机)。
  • 先在客户端ping服务器IP,看是否能通:ping 服务器IP,如果ping不通,先排查网络连接问题。
  • 如果ping得通但连不上服务器,检查服务器的防火墙是否真的放行端口,或者有没有其他安全软件拦截了连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:05:57