c# TCP同步多客户端的程序,在tcplistener开始监听后,怎么启动接受客户端发送的数据的方法?

特别是多客户端连接的情况下,我看其它人的代码,多是用线程启动接收数据的方法,然后在接收方法里中无限循环,取得连接SOCKET,再用NETWORKSTREAM接收数据。wh... 特别是多客户端连接的情况下,
我看其它人的代码,多是用线程启动接收数据的方法,然后在接收方法里中无限循环,取得连接SOCKET,再用NETWORKSTREAM接收数据。
while(true)
{
mysocket-.....
myworkstream-....
....
}
我搞不懂这个方法是怎么识别不同客户端连接的。难道那个WHILE循环每次取得的连接自动会对应已有连接还没进行接收的吗
另没底气的问下,网络编程有没有这种事件,就是服务器和客户端在连接后,一旦系统监测到有数据发来就自动触发的事件,就像鼠标一点按钮,就有按钮被点击的事件一样,如果有的话,那处理接收数据多容易啊。
展开
 我来答
runjiu
2012-07-13 · TA获得超过328个赞
知道小有建树答主
回答量:715
采纳率:50%
帮助的人:235万
展开全部
private void Listen设备ForClients()
{
LocalDatabase eventDb = new LocalDatabase();
string eventPreStr = "设备监听线程(" + Thread.CurrentThread.ManagedThreadId.ToString() + ')';
this.listener设备.Start(); eventDb.SaveStr(eventPreStr + "启动");
while (this.isMainRun == true)
{
//blocks until a client has connected to the server
TcpClient client = this.listener设备.AcceptTcpClient();//有连接接入,
//create a thread to handle communication with connected client
Thread clientThread = new Thread(new ParameterizedThreadStart(Handle设备Comm));//应答,并启动一个线程处理
//取得来源IP
eventDb.SaveStr(eventPreStr + "接收到来自" + ((System.Net.IPEndPoint)client.Client.RemoteEndPoint).Address.ToString() + "的连接,并启动线程ID:" + clientThread.ManagedThreadId.ToString());
clientThread.Start(client);
}
}

我的程序中也是这样写的,你应该注意到
TcpClient client = this.listener设备.AcceptTcpClient();//有连接接入,
这句话是有设备连接了,才执行,而不是被跳过去,也就是说,循环是在这里等待的。
你说的网络事件通知,其实可以自己做,只不过是意义不大,现在程序框架已经这么成熟了,自己写也没什么意义。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式