2012-09-18 53 views
0

我正在创建一个多线程应用程序,其中服务器应该同时处理多个客户端请求。此外,客户应该与其他客户进行沟通。服务器将保存各种客户端的端口地址,因此每个客户端都必须联系服务器以了解其对等端口的地址。java客户端服务器应用程序 - 无法创建多个客户端

我对节目的理解:

client.java(有插座和服务器套接字)

插座 - 用于以没有登记其ServerSocket的谈话的服务器,这将有助于其他同行来鉴别。 (注意:与服务器套接字不同,在创建时我们可能不得不提及端口,套接字#由操作系统唯一分配,因此我们不必担心这一点。)

serversocket - 用于与其他同行交谈,这个数字应该被其他同行知道。


server.java

的ServerSocket - 用于各种客户


通信现在,我有两个方案server.java和client.java。当然,为了拥有多个客户端,我将不止一次运行client.java。这里是我的问题:

将我的client.java有两个端口?一个套接字与服务器对话,一个服务器套接字与其他客户端对话? 如果是这样,我是否应该将端口no作为参数传递给client.java,以便它可以用作每个客户端实例的唯一服务器套接字号?

请帮我一把!

+0

你的标题是什么意思? – EJP

回答

0

是的,你可以将它们作为运行时参数传递,或者甚至更好地让服务器为你决定,这样你就不必担心分配唯一的端口号。

另外我相信你将不得不通过客户端端口和IP为客户互相交谈,除非你所有的客户端将在同一台机器上。

+0

我在本地主机上执行此操作。我是否必须在客户端程序中同时使用套接字和服务器套接字?不能我只有一个serversocket呢? – user1679463

+0

如果您希望每个客户端彼此通信,并且您拥有同一台计算机上或不同计算机上的所有客户端,则可以避免客户端上的服务器套接字。为此,您将必须实现在服务器中将数据从一个客户端传递到另一个客户端的逻辑。 –

+0

与其他客户聊天的客户端应该是点对点的。服务器不应该温和。服务器仅将对等端的端口号给予请求对等端。 – user1679463