分两种情况来讲。
1,应用程序是client,绑定端口,读写同一个socket,因为对socket读和写是原子的,同时有且仅有一个线程可以发送和接收,那么,哪个线程获得了锁,就哪个读或者是写。
2,应用程序是server,绑定端口port1,因为通常用一个socket来接收新的连接,不同的线程来处理新建的连接,这个时候 ,不会有冲突发生,因为,读写的是不同的socket。
最后,纠正一下,应用程序不是直接通过端口与其它应用通信的,而是通过 *** 作系统封装过的一个抽象的数据类型socket与其它应用通信。对于TCP/IP来说,一个socket至少包含这样四个元素,本机ip、本机port、远程ip、远程port
您好,我来为您解答:
肯定socket性能高呀
php写服务器没问题的,你看下 workerman-chat,是一个现成的php聊天室框架。普通的php程序肯定不行。
还有个更牛的动态聊天程序,后台也是php写的服务器支撑的。
希望我的回答对你有帮助。
无论是采用TCP协议还是UDP协议
1)仔细分析瞬时的链接数:是在1秒之内有10万个并发连接,还是在1小时内有10万个,或者是在1天内有10万个。这个很重要。
2)测试一个连接从连接建立-->发送接收处理-->关闭连接所需要的运行时间
3)采用异步处理。Socket异步处理是出来大并发连接数量的不二选择。异步处理本质上是多线程的,而且使用线程池。借助线程池能够提供线程处理性能。根据1)和2)分析的结果有可能需要调整线程池默认线程数量。
4)如果采用TCP协议,完成处理后,一定要关闭Accept建立的客户端连接;否则,会过度消耗系统资源,导致你的程序处理能力下降甚至崩溃。
5)如果采用UDP协议,不需要关闭服务端SOCKET
6)一个SOCKET理论上最大能处理65535个连接。也许你需要建立多个SOCKET才能满足这么高的并发连接数量。究竟需要建立多少个SOCKET,还是由1)和2)的结果决定。
============
既然数量量小,就没有长连接的必要!
长时间连接而不传数据,这样的很浪费服务器资源
以上就是关于多线程socket同一个IP和端口,只有15个线程能够成功全部的内容,包括:多线程socket同一个IP和端口,只有15个线程能够成功、PHP做聊天服务器后台,并发一万,用socket可以么、c# socket多连接(如何达到10万个客户端)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)