我在本地的写的Socket程序;在调试时,服务期端Send数据给客户端后,还想做一些事情,但报错:
未处理的异常: System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的
连接。
因为客户端在接收到服务期的信息后,确实是关闭了Socket!
所以我有如下疑问:
1.服务期端Send数据给客户端后,还能接着做事嘛?
2.客户端在接收到服务端的信息后,和服务器的通讯结束了,难道不应该关闭Socket嘛?
3.有什么方法解决这个问题嘛?

解决方案 »

  1.   

    1.服务期端Send数据给客户端后,还能接着做事嘛?
    >>>当然可以2.客户端在接收到服务端的信息后,和服务器的通讯结束了,难道不应该关闭Socket嘛?
    >>>你如果觉得这个socket不再使用了,当然可以关闭,如果还要用,当然不能关闭3.有什么方法解决这个问题嘛?
    没有任何问题,你不应该关闭一个还在使用的socket
      

  2.   

    1.服务期端Send数据给客户端后,还能接着做事嘛?
    --------
    一直循环,除非你的客户端每次都重新连接2.客户端在接收到服务端的信息后,和服务器的通讯结束了,难道不应该关闭Socket嘛?
    ----------
    这个就要看你的情况了,你可以发送完信息后关闭,下次再重新连.或是一直打开着.3.有什么方法解决这个问题嘛?
      

  3.   

    呵呵!可能是我没有说清楚!
    我在调试Server端程序,send给Client数据!因为Client关闭Socket,然后Server端就抛出异常!
    未处理的异常: System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的
    连接。这个异常是必然的嘛?必须下面这个样子嘛?
    try

      handler.BeginSend(bytedata,0,bytedata.Length,0,new AsyncCallback(SendCallback),handler);

    catch

      _socket.Shutdown(SocketShutdown.Both);
      _socket.Close();

    //Do other thing
      

  4.   

    因为Client关闭Socket,然后Server端就抛出异常!是说客户端接收到数据没有问题后就关闭Client的Socket