永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-03-04 10:39
特别是多客户端连接的情况下,
我看其它人的代码,多是用线程启动接收数据的方法,然后在接收方法里中无限循环,取得连接SOCKET,再用NETWORKSTREAM接收数据。
while(true)
{
mysocket-.....
myworkstream-....
....
}
我搞不懂这个方法是怎么识别不同客户端连接的。难道那个WHILE循环每次取得的连接自动会对应已有连接还没进行接收的吗
另没底气的问下,网络编程有没有这种事件,就是服务器和客户端在连接后,一旦系统监测到有数据发来就自动触发的事件,就像鼠标一点按钮,就有按钮被点击的事件一样,如果有的话,那处理接收数据多容易啊。
最佳答案
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();//有连接接入,
这句话是有设备连接了,才执行,而不是被跳过去,也就是说,循环是在这里等待的。
你说的网络事件通知,其实可以自己做,只不过是意义不大,现在程序框架已经这么成熟了,自己写也没什么意义。
全部回答
鄙人有一个类似于qq的程序,很好用,可以共享,邮箱?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
已经预交了下一年的联通宽带包年年费,现在想
佛山汽车站如何到南海桂城天安数码城
家用烤箱哪种的比较好些?不要太大,耐用,性
御香楼大酒店地址在什么地方,想过去办事
与成就动机关系最密切的是个体的()。A.个人
审计小区在哪里啊,我有事要去这个地方
弟子规一书中孝敬父母的句子有哪些?
安洪权投资服务公司在哪里啊,我有事要去这个
易玩通 错误:更新检查失败。
关于“权证本身风险特点”
小杨老鸭煲怎么去啊,有知道地址的么
如图,在△ABC中,AB=AC,∠A=60°,BE⊥AC于
松江乐都医院常规入职体检周六可以体检吗?(
马醉木有毒吗能家养吗
开车的开车门把我撞到了,我的电车和他的汽车
推荐资讯
中华骏捷跑起来车松油门怠速下降自己还升高一
已知全集U=R,函数y=x-2
程序出现missing ';' before ‘int
如何快速记住地理上的铁路线,要通俗易懂,急
北京市文物部门不得不对古代碑刻用土封闭在地
今荣大街/榆泰南路(路口)在哪里啊,我有事要
无心之爱打一字
亚氨基锂(Li2NH)是一种储氢容量高、安全性好
俯卧撑怎么增加数量
两站宾馆我想知道这个在什么地方
上海嘉暨商贸有限公司怎么样?
三千万光棍汉如何解决性问题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?