使用 telnet C 使用哪个 IP 连接到两台不同的计算机

Posted

技术标签:

【中文标题】使用 telnet C 使用哪个 IP 连接到两台不同的计算机【英文标题】:which IP to use to connect to two different computers using telnet C 【发布时间】:2018-09-30 00:29:53 【问题描述】:

我有两台笔记本电脑,都运行 Ubuntu。

我想用 C 语言编写一个聊天服务器,它可以与我的另一台笔记本电脑通信并接收来自它的消息。

我知道当客户端和服务器程序都在一台机器上时,我可以使用本地主机 (127.0.0.1) 并使用 telnet 让它们交谈,但是连接两台不同的计算机(在同一网络上)呢? ?我应该为他们使用哪个 IP 和端口?

【问题讨论】:

相应计算机的 IP 地址。 你是指客户端的还是服务器的? 电脑A要连接电脑B,A需要使用B的IP地址。 如果你正在编写程序,你可以使用任何你想要的端口(但避免the ones taken by others)。 我认为您需要备份并努力了解基础知识。您选择端口,避免选择协议的众所周知的端口,如果有帮助可以使用一些已知的端口。如果你想打电话给我,你会拨打我的电话号码,而不是你的。如果我想给你打电话,我会拨打你的电话号码,而不是我自己的。这应该很明显。在编写任何代码之前,请使用 ping、ssh 等工具来了解这一点。还阅读了berkley sockets library,当有人连接时,你得到一个返回地址通常取决于协议,就像有人打电话给你的来电者ID一样...... 【参考方案1】:

A 是具有 IP[A] 地址的服务器(例如:192.168.1.2) B 是具有 IP[B] 地址的客户端

因此,在代码中的某个位置,您将在 A 上的聊天服务器上打开一个端口,您将指定一个要打开的端口号。如果端口号是 X,那么在客户端你将连接到 IP[A]:X

以 X=4444 为例,您将打开如下连接:192.168.1.2:4444

问候,

【讨论】:

【参考方案2】:

基本上,就端口而言,您需要确保的只是该端口尚未被其他服务使用。有很多方法可以做到这一点,但我建议您先查看commonly used ports。

就 IP 而言,您需要确定是要使用您尝试连接的机器的公共 IP 还是私有 IP。如果您使用公共 IP,您可能必须以某种身份设置 port forwarding。如果您只是连接两个私有 ip(即一个相同的网络),那么您不需要端口转发。

最终,这个问题与您的用例高度相关,我们需要更多信息来回答您的具体情况。

【讨论】:

以上是关于使用 telnet C 使用哪个 IP 连接到两台不同的计算机的主要内容,如果未能解决你的问题,请参考以下文章

两台计算机如何通过 NAT 连接到同一个外部地址?

如何使用 netcat/socat/telnet 手动连接到 websocket?

通过IP地址与C#聊天程序。连接不同网络中的两台计算机

通过网页连接到 telnet

ping一直通,telnet 时通时不通,不稳定

netstat 说 443 已打开,但我无法使用 telnet 连接到它.. 为啥?