C# socket 多线程客户端

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:21:51
现在需要实现这样一个功能:服务器端监听套接字,每监听到一个新的连接,就开启一个线程去该对象进行消息传送;这些线程会一直保持运行状态;下次该对象再往服务器发送消息时,服务器直接调用该线程去进行处理。现在关键问题是不知道怎样去调用已经运行的线程。请高手给出答案!偶是新手,没有多少悬赏分,还望见谅!
感谢下面两位的回答,我补充一下:诚如1楼所言,服务端只需开启不同的线程去监听不同的端口即可,那么在监听上可以做到多线程处理;而我们现在要做的是:服务器端往这么多已建立连接的客户端发送消息时,也要采用多线程,也就是刚才监听到的不同的客户端所建立的线程,调用这些线程中的“消息发送”的方法,这一点我不知如何实现,还望高人继续解答,不胜感激!

你只需要开启子线程去监听特定端口就行了,在监听时保持连接状态,客户端下次再连接这个特定端口时,服务器端的监听会捕捉到的。

所以服务器端和客户端是靠特定端口来保持双方的通讯的,不需要你来处理线程调用了。

补充:

你可能还没明白多线程的用法,

你可能误解了一点:开启子线程后会关闭,然后下次怎么去找上次开启的线程,是吗?

其实一般的做法是,开启了子线程后,就进入了一个无限循环 while(true){}

然后在这个循环里面去监听客户端的连接,连上来一次处理一次,直到客户端发出停止连接的通知才结束这个无限循环,或者设置一个超时等待。或者在主线程中强制终止这个子线程。

所以你开启了子线程后,就不用担心其他事情了,这个子线程里的循环会一直在运行,你不需要去考虑线程调度的问题。

当然,如果是商业级的程序,会要考虑更多的问题,比如资源访问同步,线程调度,并发控制等。

一楼正解