首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >套接字点对点

套接字点对点
EN

Stack Overflow用户
提问于 2014-04-25 15:35:46
回答 1查看 3.9K关注 0票数 1

我正在做一个带有套接字的聊天桌面应用程序,我的目的是在客户端之间创建一个对等通信。我的问题是:

如果我有所有的IP地址,我能同时连接他们之间的客户端吗?

在我的项目中,每个客户端都有服务器套接字和套接字(客户端)。

例如,client_1在端口1001中侦听连接,但同时也可以连接到具有不同IP-s的其他客户端,并侦听不同的端口。

现在我想知道的是,如果有经验的人能告诉我,如果我连接到一个客户端,而另一个客户端与我连接,那么是否有可能连接到某个客户端,同时接收来自其他客户端的消息呢?

如果Client_A监听端口1001,却想与Client_B聊天,而不是通过指定自己的IP和端口将自己连接到Client_B;现在,Client_A可以同时接收来自连接到他端口的其他客户端的消息吗?

如果有人能帮助我,我也可以发布我的代码;但我认为这是我必须解决的逻辑问题。

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 20:04:59

听起来您正在为套接字体系结构而挣扎。架构中的每个套接字对将由一对唯一的IP地址决定。维基百科说

通信本地和远程套接字称为套接字对。每个套接字对由一个唯一的4元组描述,它由源和目标IP地址和端口号组成,即本地和远程套接字地址。3.4如上文所讨论的,在TCP情况下,每个唯一的套接字对4元组都分配了一个套接字编号。

此外,根据这个堆叠溢出的答案

简单地说,如果我从客户端连接同一台web服务器两次,那么从我的角度来看,这两个连接将有不同的源端口和与web服务器的目标端口。因此,即使这两个连接都有相同的源IP地址和目标IP地址,也不会有歧义。

您的点对点聊天客户端网络绝对可以工作,而且客户确实可以将他们收到的消息联合到其他客户端。很可能您希望用GUID标记每条消息,这样客户端就不会多次处理相同的消息。

也许更有用的架构是发布/子体系结构。实时网络(如PubNub )允许您将消息发布到全局通道,并在订阅该通道的客户端上接收这些消息。在您的例子中,使用他们的Java发布消息非常简单:

代码语言:javascript
运行
复制
Callback callback = new Callback() {
  public void successCallback(String channel, Object response) {
    System.out.println(response.toString());
  }
  public void errorCallback(String channel, PubnubError error) {
    System.out.println(error.toString());
  }
};
pubnub.publish("demo", "Hello World !!" , callback);

我希望这能帮到你。干杯!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23297376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档