客户端通过互联网连接客户端

时间:2016-10-04 22:36:27

标签: perl sockets client port

我可能有一个非常愚蠢的问题但只是想确定答案。请对不起,如果我在这里使用任何错误的表达,因为我是网络编程的绝对先发者。

我最近开始学习套接字,我决定构建一个简单的UNIX终端聊天。我决定使用Perl进入它,并建立了一些简单的客户端 - 服务器连接,并在它们之间传递消息。

但后来我有了在没有服务器的情况下进行简单的双向聊天的想法,其中一个客户端将充当服务器。嗯,这与以前在本地网络上的情况相同,只是感知问题:P

但是在互联网上呢?

有没有办法实现客户端 - 客户端(这里客户端我的意思是真正的个人机器)通信(其中一个显然是作为服务器)而不需要中间人作为主机?

我看到的主要问题是IP地址,即公共IP地址是路由器而不是机器本身。在我读到的时候,我得出的结论是,由于互联网协议的低水平实施,这是不可能的,而且我已经看到现代操作系统不允许它的许多含义出于安全原因,无论如何。

真的没办法让这种简单的终端聊天工作吗?例如,在不同路由器后面的两台不同的机器运行两个不同的Perl脚本(一个用于服务器,一个用于客户端),并交换信息,如典型的客户端 - 服务器连接?

更新

好的,正如stevieb提到我应该有一个代码示例,这是我的Perl脚本中构成服务器套接字的部分:

use IO::Socket;
use IO::Socket::INET;

my $reciever = new IO::Socket::INET ( 
    LocalHost => 'localhost',
    LocalPort => '9000',
    Proto => 'tcp', 
    Listen => 1, 
    Reuse => 1,
 ); die "Could not create socket: $!\n" unless $reciever;

此部分适用于本地主机服务器设置。

所以我要说我的公共IP地址是11.1.11.111。

如果我只是将第5行更改为:

LocalHost => '11.1.11.111.',
它扔了:

Could not create socket: The requested address is not valid in its context.

我还缺少什么,以及正确的方法是什么?

由于

0 个答案:

没有答案