写一个socket通信程序.
要求:
一个线程进行发送数据.一个线程进行接收数据.并且两个线程共用这一个socket.
结果发现在接收数据过程中.发送线程再发送数据时.会照成socket包错误....
百思不得其解..还记大虾提点.....

解决方案 »

  1.   

    应该不会有这个问题,java对于同一个socket的2个Stream处理的非常好,希望你把你的程序异常贴一下。你也可以看看我这里的一些多线程的资料 
      

  2.   

    你要用非阻塞socket,来实现。网上有很多例子.
      

  3.   

    答:socket网络通信程序当几乎都是多线程的.你创建两个线程,一个专门针对socket的InputStream读,另一个专门针对socket的OutputStream写,这样一点问题都没有的.不知楼主的"socket包错误"是何意思.我想几乎是:网络程序的代码结构上有问题(如:通信双方的数据读/写的先后次序上等)
      

  4.   


    比如传送1G的文件.文件被分为100个包传送.中间有个别包出性错误.而且我分析了.出错的包前半截是对的.但后半截就是错的.而且在传送小文件时都没发现什么问题.但在大压力下.程序就会出现这种错误..
    程序传输也是比较麻烦的.我这边客户端把文件传输到服务器.服务器再把文件转给另一个客户端.而且服务是用C++开发的.
    流用的是DataOutputStream ..其write方法本来就是线程同步的.而且写的每个包在写时的md5验证码是对的.但对方接收到的就不对...百思不得其解...
      

  5.   

    我仔细想了下.确实是有这种情况.
    A端正在接收中.还没收完..
    而B端由于没有收到A端的回应.则又发了一个重包过去.
    这样情况是否会有问题????