本帖最后由 cuikp139 于 2010-11-03 02:03:13 编辑

解决方案 »

  1.   

    发送和接收是共用一个网络缓冲区,你在接收的同时再起线程去调用发送,当然会报WSACancelBlockingCall错误,必须发送完毕后再进行接收
      

  2.   


    你这样中间开个线程,让Client去接收数据,接下来又立马让Client去发送数据,实在是有点莫名其妙.接收和发送可以是同一个线程,该收的时候收,该发的时候发.
      

  3.   

    当从stream中Read或者Write的时候,它已经被(并行程序)close掉了。
      

  4.   

    这种代码懒的看,网络上传的一些所谓winform、点对点的“聊天程序”是非常害人的。
      

  5.   

    发送和接收最好分开! 当接收到消息的时候也不能像你写的那样调用控件 必须使用代理 \
    MessageBox.INVOKE(delegate)
      

  6.   

    UP,
    同一个socket连接应该使用同一个NetworkStream,你又开了个线程用于接收,这样肯定会出错,要么就建立两个socket,一个专门发,另一个专门收。
      

  7.   

    可以采用异步方式,对每个SOCKET开辟一个不同的收发缓冲,这样你就可以同时处理收发操作了,如果默认不开辟不同的缓冲,则会产生冲突,你可以看一下基于.NET的IOCP异步操作的例子
      

  8.   

    http://vbnet.5d6d.com/thread-7-1-1.html
    不是线程的Socket,高手写的
    不需要线程
    全通过事件实现……
    可惜是VB.Net的,用转换器转成C#吧