日期:2014-05-17  浏览次数:20851 次

C#中UDP通信和TCP通信的差异

C#UDPTCP通信的详解

可以看到这个处理的基本步骤如下:????

??执行Receive函数,接收远程socket发送的信息;????

??把信息从字节转换到string;????

??处理该信息,然后进入下一个循环,继续等待socket发送新的信息。????

值得注意的有几个:????

??1Receive函数。这个函数和ListenerAccept函数类似。在这个地方等待执行,如果没有新的消息,这个函数就不会执行下一句,一直等待。????

??2:接收的是字节流,需要转化成字符串????

??3:判断远程关闭联接的方式????

??4:如果对方的消息非常大,还得循环接收这个data。????

4:如何管理这些联接(thread)????

通过上边的程序,基本上可以建立一个侦听,并且处理联接会话。但是如何管理这些thread呢?不然大量产生thread可是一个灾难。????

管理的方法比较简单,在Listener里面我定义了一个静态的哈希表(static?public?Hashtable?Connections=new?Hashtable();),存储Connection实例和它对应的Thread实例。而connection中也加入了一个最后联接时间的定义(private?DateTime?_lastConnectTime;)。在新链接建立的时候(ListenerAccept()之后)就把Connection实例和Thread实例存到哈希表中;在ConnectionReceive的时候修改最后联接时间。这样我们就可以知道该Connection在哪里,并且会话是否活跃。????

然后在