2013-03-06 55 views
1

我对套接字编程相当新颖 - 所以这可能是一个简单的问题,但我真的想澄清。在服务器上使用不同的端口号

我有一个多客户端到单个服务器程序:个人客户端发送消息到服务器处理它们,然后将它传递到目的地,即服务器是中介。

在服务器端,每个客户端都有一个线程用于侦听来自客户端的消息(它将被放置在缓冲区中)。目前所有的客户端都发送消息到同一个端口(据我所知)。

我正在考虑设置另一个线程,服务器将在其上传输消息之前处理这些消息。使用服务器上的另一个端口发送这些消息是否合理?

我不是说这是一个讨论,但我不知道什么是常见或更多的逻辑做 - 任何建议?

在客户端,我计划让它有一个线程用于发送消息到服务器,另一个线程用于接收。请让我知道是否需要其他信息!

编辑

目前,它是一个1-服务器与多(现在几十,几百更高版本)-client程序 - 我似乎有客户从我的服务器接收邮件的问题(我因此我认为使用相同的端口可能会成为问题),但我会再次尝试使用相同的端口并查看。我认为这可能是收到端口太忙而不能发送消息。

+0

我假设同一台服务器向客户端发送和接收消息,如果是这样,那么你可能会使用相同的端口。我看不出为什么。否则,对于多个服务器,使用两个端口可能是明智的。也许以后出于故障排除的原因。 – pandoragami 2013-03-06 08:20:49

+0

你在使用什么操作系统?在Linux上有'select'系统调用,它可以用来几乎完全摆脱线程。服务器周期将如下所示:'select'为您提供有关描述符(套接字)的信息,可以为您提供数据。您循环这些套接字并处理数据(接受连接/生成响应),然后再重复一遍。 – 2013-03-06 08:25:31

+0

该计划的确切用意是什么?客户端 - 服务器程序的范围可以从1client-1server到1000clients-100servers,每种服务器都有不同的体系结构以满足不同的需求。 – user1952500 2013-03-06 08:25:34

回答

1

目前所有的客户端都发送消息到相同的端口(据我所知)。

你是什么意思,“据我所知”?您必须知道您是否在服务器上打开多个端口。

在服务器上使用另一个端口发送这些消息是否合理?

不,它不。如果您使用的是TCP,则将消息发送回相同的套接字。如果您使用UDP,则不需要多个UDP套接字,并且如果回复来自发送请求的相同ip:端口,则它简化了客户端和应用程序协议。

+0

EJP表示TCP连接是双向的,并且同时发送和接收数据。由于服务器可以接受单个端口上的多个连接,因此几乎不需要保持更多端口的打开。 – Basilevs 2013-03-06 09:00:01

+0

@Basilevs不要假设告诉人们我的意思。如有必要,我可以自己解释,而实际上我在这里的意思是这个问题没有任何意义。您对TCP的陈述都是真实的,但在制作时不需要隐藏在其他人的背后。 – EJP 2013-03-11 05:17:58

相关问题