C# 一个监听 同时判断多个客户端发来的信息,有时候没有监听到!

问题描述

//监听是否有挂起if(tcplistener.Pending()){TcpClienttcp=tcplistener.AcceptTcpClient();stream=tcp.GetStream();try{IFormatterformatter=newBinaryFormatter();car=(CarDataInfo)formatter.Deserialize(stream);this.Invoke((EventHandler)(delegate{stringCnumber=car.CarNumber;//得到车辆的编号;}));}catch(Exceptione){if(e.Message!="在分析完成之前就遇到流结尾。"){MessageBox.Show(e.Message,"错误");}}finally{stream.Flush();stream.Close();tcp.Close();}}//发送消息TcpClientcl=newTcpClient();try{if(carinfo.CarNumber==CarNumberOne){cl.Connect(carinfo.CarIp,carport1);stream=cl.GetStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,tpi);}elseif(carinfo.CarNumber==CarNumberTwo){cl.Connect(carinfo.CarIp,carport2);stream=cl.GetStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,tpi);}elseif(carinfo.CarNumber==CarNumberThree){cl.Connect(carinfo.CarIp,carport3);stream=cl.GetStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,tpi);}elseif(carinfo.CarNumber==CarNumberFour){cl.Connect(carinfo.CarIp,carport4);cl.GetStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,tpi);}returntrue;}catch(Exceptione){MessageBox.Show("与车车辆信息链接失败正在重新链接!","提示");if(sendMessage(tpi,carinfo)){returntrue;}elsereturnfalse;}finally{if(stream!=null){stream.Flush();stream.Close();}cl.Close();}我这个是开启一个监听,但是我要监听到4个客户端发过来的数据,有时候就监听不到了!

解决方案

解决方案二:
while(tcplistener.Pending())
解决方案三:
有没有大侠们知道的啊!我这是第一写通讯,不知道错误在哪了啊!希望有经验的来看看!
解决方案四:
代码本来已经超长了。这种格式,没法看。
解决方案五:
最好能多線程監聽.

时间: 2024-08-31 00:47:50

C# 一个监听 同时判断多个客户端发来的信息,有时候没有监听到!的相关文章

如何停止Socket的监听,断开已有的客户端链接?

问题描述 做了个server端,发现监听后停止不了,调用了socket.close后也不行客户端依然可以发送数据过来,新的客户端也依然可以接进来,这是怎么回事?参考了几个网上的例子也没用. 解决方案 解决方案二:lz使用的tcpserver还是直接封装的socket其实要断开所有连接,应该在accept环节做文章只要accept被禁了,客户端是连不进来的解决方案三:1.对Accept所在线程直接用Abort()2.Socket对象直接Dispose()解决方案四:引用1楼xian_wwq的回复:

由欢心管理员发来的消息是从哪里监听的,怎么样取得系统管理员发来的消息。急急急,求大神指教

问题描述 解决方案 didReceiveMessage回调,和收其它id发的消息是一样的.后台管理员发,message.from就是admin.别的id发过来的,message.from就是那个环信id.

数据中心面对的网络监听技术

数据中心里最宝贵的就是数据,这些数据里隐含着很多私有的.机密信息,小到个人隐私,大到国家安全,所以保护数据是数据中心最为关键的任务,数据一旦被窃取被泄露,给数据中心带来的损失无法估计.然而,这些数据在数据中心里以及外部并不是静止的,躺在存储硬盘里睡大觉,而是通过网络在不断传递和变化着,网络成为数据传递的最为重要通道,无论是数据中心内部还是外部.对网络进行监听,就可以掌握数据的基本信息和特征,听起来网络监听这个词语贬义成分居多.而实际上,对网络监听对于数据中心管理非常重要.不过的确是凡事都有其两面

Oracle中静态监听导致的ORA-12523错误

今天配置完共享服务器模式之后发现登录过程中报错ORA-12523,排查错误之后发现是静态监听惹的祸. 本机之上有两个监听,一个静态监听1521端口,一个动态监听1526端口. LISTENER= (DESCRIPTION=  (ADDRESS_LIST=    (ADDRESS=(PROTOCOL=tcp)(HOST=jp)(PORT=1521))    (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) LSNR2= (DESCRIPTION=  (ADDRESS_

android如何在另一个方法里面调用ExpandableListView的监听方法

问题描述 android如何在另一个方法里面调用ExpandableListView的监听方法 我想在别的地方(比如button的click监听方法里面) 来控制listView的一级子菜单的收缩和展开,一级二级子菜单的选定. 新人报道 ,求大神... 解决方案 这是动态监听expandableListView的高度,你可以参考下. 在button的click中监听,可以吧ListView的点击事件提出来写,在button的click中调用 setListViewHeightBasedOnChi

java-Java在一个A类中监听另一个B类里面一个整型变量值的变化

问题描述 Java在一个A类中监听另一个B类里面一个整型变量值的变化 B类中值一变化A就得到这个变化的值,我知道应该是用观察者模式来实现,但不知道具体的方法 解决方案 public class B{ private int a; private OnAUpdateListener onAUpdateListener; public void setOnAUpdateListener(OnAUpdateListener onAUpdateListener){ this.onAUpdateListe

【IOS-COCOS2D游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/450.html ------------本章补充开始!------------            本篇对于多触点和触屏事件已经做了一个详细的说明,但是有一点忽略了,就是开启多触点的支持!步骤如下:          首先进入AppDelegate.m 类中, 1 <strong>- (void) appl

监听自身卸载,弹出用户反馈调查

1,情景分析         在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中.不知道大家在使用一个Android应用的时候,当我们卸载这个应用后,设备上会弹出一个"用户反馈调查"的网页出

防止网络被监听的方法

网络监听法 在网络上,任何一台主机所发送的数据包,都会通过网络线路传输到指定的目标主机上,所有在这个网络线路上的主机都可以侦听到这个传输的数据包.正常情况下,网卡对所经过的数据包只做简单的判断处理,如果数据包中的目标地址与网卡的相同,则接收该数据包,否则不做任何处理.如果将网卡设为杂凑模式,则该网卡就可接收任何流经它的数据包,不论数据包的目标地址是什么.攻击者利用这样一个原理,将网卡设置成杂凑模式,然后截获流经它的各种数据包进行分析,对一些具有敏感性的数据包做进一步的解析,如含有用户名(user