socket服务器端多线程是什么设计思路呢 谢谢
socket服务器端多线程是什么设计思路呢 请指教 多谢我要做一个socket多线程服务端 一般是怎么做的呢能否详
socket服务器端多线程是什么设计思路呢 请指教 多谢
我要做一个socket多线程服务端 一般是怎么做的呢
能否详细解释一下 我不明白的有以下几点:
1, server端启动时是否本身就是启动多个线程来监听同一端口还是说server端启动后 如果有客户端连接才启动一个线程跟这个client端通信, 如果两个都可以 那么监听同一端口 他们是怎么做到互斥的
2, server端的线程在获得数据后 如何下发给指定的client端的 会不会有好几个client端发送过来数据,线程在处理后 发送回给client端时出现顺序错误 比如:A client端请求的数据,在多线程server端处理后却发给了B client端,如何保证他们发送的正确呢
3,如果第1个疑问是两个都可以的话 哪个好呢 另一方面 一般server端多线程是怎么做的, client端又是怎么做的 是不是client端也是多线程的呢
4,如果client端时多线程 server端也是多线程的话 那么client端多个线程发送数据给server端 那么server端又是如何保证返回给client端的线程数据顺序肯定是正确的呢
多谢指教 我没做过多线程通信这方面 麻烦说的尽量详细些 最好有linuc c的这方面的例子 万分感谢
[解决办法]
只有一个线程在监听
收到连接后accept()会返回一个新的socket_id
然后把这个id放到新的线程中去处理
主线程继续监听
[解决办法]
1: 在没有相关代码的情况下,server 也是在主线程里面实现 会话,接受发送,没有多线程。
2:关键区域枷锁
3:用非阻塞编程的话,如果同在一个聊天室的人多的话,这就需要多线程来处理单一事件了(收信,发信,退出。。。),比如,一个人在1000人的聊天室里面给所有人发个图片,这可能需要当回调函数收到这个消息以后,把这个“图片”交给多个等待(专门)给别人发信的“线程”来处理了。还有一种可能就是同时说话的人很多,这个么,也要在回调得到消息以后,把向任务列表里面添加任务的任务交给等待的多线程了
其他情况下(比如总共5人在线的程序),感觉,不用多线程就能够处理了
4:客户端多线程发信有什么意义?你一个人同时打五句话,自己跟自己玩么?什么?一句话用多个线程发给server?天哪,无语了。
[解决办法]
[解决办法]