Java计算机到计算机的连接?

Java计算机到计算机的连接?,java,tcp,port,connect,tcp-ip,Java,Tcp,Port,Connect,Tcp Ip,有没有可能让两台计算机在没有Java服务器的情况下进行套接字连接?如果是,怎么做?我只见过服务器是永久性的服务器-客户机连接示例 例如: 1. 2 people, person A and person B, want to connect using this application 2. Person A runs application, clicks "host" 3. Application hands person A a code (IP+port?) and begins lis

有没有可能让两台计算机在没有Java服务器的情况下进行套接字连接?如果是,怎么做?我只见过服务器是永久性的服务器-客户机连接示例

例如:

1. 2 people, person A and person B, want to connect using this application
2. Person A runs application, clicks "host"
3. Application hands person A a code (IP+port?) and begins listening.
4. Person B clicks "join" and types in code.
5.  Person B's computer sees Person A's computer and they connect. Person A accepts connection.

我从来没有真正理解过这一点。如果这是一个糟糕的问题,请原谅。

在您的场景中,人员a的PC将充当服务器,人员B的PC将充当客户端。即使只是暂时的,A正在侦听连接的事实也意味着它正在充当服务器。

根据定义,一方必须启动连接(即发出连接请求)。这意味着另一方必须打开服务器套接字才能接收连接。通过使客户端和服务器都实现功能,您可以在双方使用相同的代码,并根据启动连接的用户承担相应的角色(服务器或客户端)。

好的。因此,您可以找到您的外部IP,监听端口xxxx,并向他们发送代码IP:port,如果客户机正确处理,则不会有异议?根据A和B的位置,可能会有进一步的考虑。如果A和B在同一个网络上,A可以只公布本地IP。但是,如果它们不在同一个网络上,并且正在进行NAT转换(A和B都有外部internet IP),那么您可能毕竟需要一台服务器。在没有服务器的情况下,获取外部IP是不容易的,除非它是静态的,并且您事先知道它。我想我只需要制作一个与您的IP相呼应的服务器。为什么没有一些官方的IP查找工具?问题是你正在试图确定你的外部IP,这可能因接收者的不同而有所不同。例如,假设某人A连接到他们的路由器,该路由器也连接到两个不同的网络X和Y,这两个网络仅由A的路由器连接。A的路由器在每个网络上都有不同的IP。如果人员B在网络X上,则需要连接到网络X的路由器IP。如果人员B在网络Y上,则需要网络Y的路由器IP。嗯。。。这是有道理的。谢谢