我正在用Java创建一个聊天应用程序。我毫不费力地让服务器接受多个客户端套接字连接并维护多个线程。我已经设法让他们发送和接收消息。在Java中,如何创建到同一特定客户端的多个套接字连接?
然而,我无法弄清楚如何创建多个套接字连接到同一个特定的客户端。在服务器和客户端上,我都有一个用于发送和接收聊天消息的线程。我希望有另外一个连接来做后台工作,比如发送文件,同时继续传递聊天消息。
例如,客户端1和客户端2通过服务器,这使帐户数据库和聊天消息短信彼此。我希望能够从Client1发送文件到Client2,反之亦然。
Connection1: Client1 <--message--> Server <--message--> Client2
Connection2: Client1 --file--> Server --file--> Client2
or
Connection2: Client1 --file--> Client2
我在想如何为每个客户端有IP地址,我可以使用它们来创建新的连接。但是,由于我在本地主机上运行这个,所有的IP地址都是相同的,所以我不能这样做。
使用TCP端口? – xTrollxDudex
IRC很久以前就解决了这个问题。看看[DCC](http://en.wikipedia.org/wiki/Direct_Client-to-Client)如何处理它。 (这不是所有的NAT友好的,但你不会发现很多,除非服务器最终涉及每个字节传输。) – cHao
客户端连接到服务器,而不是相反。 – EJP