基本上我试图让许多java客户端连接到我的ColdFusion服务器上的套接字(使用套接字网关)。然而,在我开始编码之前,我对插座及其性能有点困惑。首先,套接字是针对连接到一台服务器上的一个套接字(比如端口2202)的许多(1000+)客户端吗?如果等待的所有内容基本上都是ping,或者当这些客户端收到此“ping”时它们可以获得一些新数据,那么性能如何呢。
谢谢, 费萨尔阿比德
答案 0 :(得分:6)
套接字由以下元组标识,
即使1000个客户端都连接到同一个端口(目标端口),每个客户端都将获得自己的套接字。所以你将打开1000个插座。
使用阻塞I / O维护1000个套接字很困难,这通常意味着1000个线程。你需要使用NIO。我们有一个用Mina编写的服务器,它可以在峰值处理2000个连接。
答案 1 :(得分:2)
首先,是插座的意思 许多(1000+)个客户连接到一个 一台服务器上的socket(例如端口2202)
是的,您的服务器将在端口2202上打开一个套接字,并且1000客户端将连接到它。 服务器打开服务器套接字,客户端将打开客户端套接字,它不同。
如果所有的话,表现如何 等待基本上是ping,或者 这些客户的事情 收到这个“ping”他们可以得到 一些新数据
在服务器上,使用getInputStream函数从客户端获取数据,使用getOutputStream函数向客户端发送数据。
注意:您应该使用Thread来处理客户端的每个请求
答案 2 :(得分:1)
使用阻塞I / O的许多套接字客户端没有任何问题(您可以查看this article以获取更多相关信息)。但是,还有另一种方法可以更好地满足您的需求:
答案 3 :(得分:0)
使用简单的Java套接字编程同时连接1000个客户端并不是完美的方法。问题是在fedora linux默认最大文件中没有文件可以打开1024,而在windows中它是2048或类似的东西。因此,在您的服务器端,您将发现超过1000个文件打开,之后如果客户端将继续增加,那么您将发现太多文件opnened错误。所以更好的方法是使用非阻塞套接字编程(我的意思是说使用SocketChannel)根据我的检查同时使用套接字通道我们可以连接20,000个客户端而没有任何问题。
所以最好使用nio。有一本非常好的书来自Oreilly出版的java nio。 我用过java nio(套接字通道)
由于 Sunil Kumar Sahoo