【发布时间】:2015-03-01 16:57:20
【问题描述】:
我正在用 Java 创建一个聊天应用程序。让服务器接受多个客户端套接字连接并维护多个线程没有问题。我已经设法让他们发送和接收消息。
但是,我不知道如何为同一个特定客户端创建多个套接字连接。在服务器和客户端上,我已经有一个用于发送和接收聊天消息的线程。我希望在此基础上建立另一个连接来执行后台操作,例如发送文件,同时继续中继聊天消息。
例如,Client1 和 Client2 通过服务器相互发送消息,该服务器保存一个帐户和聊天消息数据库。我希望能够将文件从 Client1 发送到 Client2,反之亦然。
Connection1: Client1 <--message--> Server <--message--> Client2
Connection2: Client1 --file--> Server --file--> Client2
or
Connection2: Client1 --file--> Client2
我在考虑每个客户端如何拥有 IP 地址,我可以使用这些地址来创建新连接。但是,由于我在 localhost 上运行它,所有 IP 地址都是相同的,所以我不能这样做。
【问题讨论】:
-
IRC 很久以前就解决了一半这个问题。看看DCC 是如何处理它的。 (它并不是对 NAT 友好,但除非服务器最终参与传输的每个字节,否则您不会发现太多。)
-
客户端连接到服务器,而不是反过来。
标签: java multithreading sockets chat