当服务端和客户端建立socket后,服务端退出再重进去,能否自动恢复socket间的连接,
如果不能,如何处理,使服务器端重新建立和客户端的连接?

解决方案 »

  1.   

    来晚了
    TCP/IP方式连接服务器,若断开,则需要重新连接连接,通过心跳检测服务器是否再次启动
    若采用UDP方式,则无需重新启动
      

  2.   

    TCP/IP方式连接服务器,若断开,则需要重新连接连接,通过心跳检测服务器是否再次启动 
    若采用UDP方式,则无需重新启动
      

  3.   

    http://topic.csdn.net/u/20100110/21/e9fcdd35-3962-47ad-aa92-f9f7fe9e4526.html?16098看一下这个贴子。CSDN里面的精华贴。
      

  4.   

    很简单的一个例子..
    客户端
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      pData : array[0..255] of char;
    begin
      FillChar(pData,Length(pData),0);
      StrCopy(pData,PChar('测试'));
      send(AcceptSock,pData,Length(pData) * SizeOf(Char) ,0);
    end;
    服务器端的socke通信事件:
    procedure TForm1.WMCLIENTSOCK(var message: TMessage);
    var
      ret : integer;
      fbuf : array[0..255] of Char;
    begin
      case WSAGetSelectEvent(message.LParam) of
        FD_READ :
        begin
        //在这里分离出数据包的信息,判断是否是客户端发过来的心跳包
         //当然数据结构得自己定义好
          ret := recv(SkC,fbuf,256,0);
          mmo1.Lines.Add('服务器端来的消息 :' + fbuf);
        end;
      end;
    end;
      

  5.   

    这个本身逻辑就有逻辑
    如何处理,使服务器端重新建立和客户端的连接?
    ----------------------------
    你服务端都退出了,SOCKET原有的连接都关闭了
    该在客户端根据WSAGetLastError异常判断,去执行重连
      

  6.   

    如果是tcp连接,服务器关了之后,与客户端的连接属性也随之没有了,重新启动的服务器端套接字没有客户端的sockaddr也无法通信,客户端早迟都会触发一个错误
      

  7.   

    http://topic.csdn.net/u/20100119/16/6b011436-4490-4e74-ba4a-a73057c3cf0f.html