Добрый день, Есть сервер и клиент, общающиеся асинхронно через TCP. Есть задача погасить оба сокета и снова поднять соединение.
Прошу прощения внизу много кода
Код
public class DemoServer : NetwInterface{
public override int StartMain(){ IPEndPoint MyServerIPPoint = new IPEndPoint(IPAddress.Loopback,1100); MySocket = new Socket (MyServerIPPoint.Address.AddressFamily,SocketType.Stream,ProtocolType.Tcp); //MessageServiceClass.MessageProcessing ("<=========Demo Server Try to bind "+MyServerIPPoint.Address.ToString()); Debug.Log("<=========Demo Server Try to bind "+MyServerIPPoint.Address.ToString()); try{ MySocket.Bind(MyServerIPPoint); } catch(SocketException exc){ MessageServiceClass.MessageProcessing("Socket exception: " + exc.SocketErrorCode.ToString()); } MessageServiceClass.MessageProcessing ("<=========Demo Server binded and Try to begin listen"); MySocket.Listen(1); // Wait only 1 connections // Waiting for connect & set other side socket
MySocket.BeginAccept(new AsyncCallback(AcceptCallback), MySocket); MessageServiceClass.MessageProcessing ("Demo Server begin to listen from address "+MyServerIPPoint.Address.AddressFamily.ToString()); return 0; } private void AcceptCallback(IAsyncResult result) {
try { // Завершение операции Accept Socket s = (Socket)result.AsyncState; MySocket = s.EndAccept(result);
MessageServiceClass.MessageProcessing ("SERVER: Demo Server Connected"); ConnectionStatus = true; BeginReceive();
public override void Disconnect(){ ConnectionStatus = false; MySocket.Close();
}
} //demoserver class
Вкрадце демо сервер делает bind,listen,beginaccept,endaccept,beginreceive,endreceive,close клиент делает beginconnect,endconnect,beginsend,endsend,close..
Я уже что только не перепробовал и пробовал гасить клиента, потом через таймаут гасить сервер. не помогало. В чем фокус? Заранее спасибо...