用.net(c#)做网络编程(socket)写了一个数据同步的服务,在XP 上同时连接60个客户端,服务能正常运行,在server 2003 上面运行一段时间
会有此"法在通訊端上執行操作,因為系統緩衝區空間不足,或是佇列已滿" 错误信息,直到最后服务完全停止运行...请问大家是否知道 XP 与server2003 网络编程(socket) 有什么区别? 在线等

解决方案 »

  1.   

    是否端口号已经被占用完,是否是连接没有释放?
    在CMD中输入: netstat -ano 查看端口号和占用该端口号的进程ID。
      

  2.   

    猜测不是操作系统的问题,可能是连接多了以后,处理不过来,导致某些端口上的数据发送不及,把Socket缓冲区塞满了。我遇到此问题时,是这样处理的:降低该次发送的数据量,再次尝试
                        try
                        {
                            count = socket.Send(data, offset + handled, len, SocketFlags.None);                        
                        }
                        catch (SocketException e)
                        {
                            //Console.WriteLine("SendSocket catch an error:{0} {1}", e.ErrorCode, e.Message);
                            if (e.ErrorCode == 10055 && partLen > _K)
                            {
                                partLen = (int)((double)partLen * 0.8); //此处,降低每次的发送量为原先的0.8倍
                                continue;             
                            }
                            item.Exception = e;
                        }
                        catch (Exception e)
                        {
                            item.Exception = e;                    
                        }
      

  3.   

    缓存区问题,检查代码
    http://topic.csdn.net/u/20081103/10/15cdabcd-8e8a-4d41-b70f-118e4121f063.html
    参考
      

  4.   

    程序也应该有问题,但是在XP上测试(硬件配置比SERVER 2003 还差一些),连接的设备数量一样,却没有发生此问题.