/// <summary> /// 丢失链接 /// </summary> void OnDisconnected(DisType dis, string msg) { sockteClientState = netState.DisConnected; Close(); //关掉客户端链接 int protocal = dis == DisType.Exception ? Protocal.Exception : Protocal.Disconnect; ByteBuffer buffer = new ByteBuffer(); buffer.WriteShort((ushort)protocal); lock (NetworkManager.sEvents) { NetworkManager.AddEvent(protocal, buffer); } //Debug.LogError("Connection was closed by the server:>" + msg + " Distype:>" + dis); }
/// <summary> /// 连接服务器 /// </summary> void ConnectServer(string host, int port) { client = null; client = new TcpClient(); client.SendTimeout = 1000; client.ReceiveTimeout = 1000; client.NoDelay = true; try { client.BeginConnect(host, port, new AsyncCallback(OnConnect), null); } catch (Exception e) { Close(); //Debug.LogError(e.Message); sockteClientState = netState.None; lock (NetworkManager.sEvents) { NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer()); } } }
private void start() { while (true) { if (sockteClientState == netState.None) { Thread.Sleep(1000); } else if (sockteClientState == netState.ToConnect) { SendConnect(); Thread.Sleep(100); } else if (sockteClientState == netState.Connected) { //send message lock(NetworkManager.toSendBuffers) { while (NetworkManager.toSendBuffers.Count > 0) { ByteBuffer btbuffer = NetworkManager.toSendBuffers.Dequeue(); if (btbuffer != null) { SendMessage(btbuffer); } } } //recv messsage readMessage(); } else if (sockteClientState == netState.ToDisconnect) { OnRemove(); sockteClientState = netState.DisConnected; return; } Console.WriteLine("socket running!!"); } }
private void start() { while (true) { if (sockteClientState == netState.None) { Thread.Sleep(1000); } else if (sockteClientState == netState.ToConnect) { SendConnect(); Thread.Sleep(100); } else if (sockteClientState == netState.Connected) { //send message lock (NetworkManager.toSendBuffers) { while (NetworkManager.toSendBuffers.Count > 0) { ByteBuffer btbuffer = NetworkManager.toSendBuffers.Dequeue(); if (btbuffer != null) { SendMessage(btbuffer); } } } //recv messsage readMessage(); } else if (sockteClientState == netState.ToDisconnect) { OnRemove(); sockteClientState = netState.DisConnected; return; } Console.WriteLine("socket running!!"); } }
/// <summary> /// Connect server callback /// </summary> void OnConnect(IAsyncResult asr) { if (client.Connected)// socket has connected to server. { lock (NetworkManager.sEvents) { NetworkManager.AddEvent(Protocal.Connect, new ByteBuffer()); } sockteClientState = netState.Connected; } else { //Close(); if (sockteClientState == netState.ToConnect) { lock (NetworkManager.sEvents) { NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer()); } } sockteClientState = netState.None; } }
/// <summary> /// 连接服务器 /// </summary> void ConnectServer(string host, int port) { client = null; client = new TcpClient(); client.SendTimeout = 1000; client.ReceiveTimeout = 1000; client.NoDelay = true; try { client.BeginConnect(host, port,new AsyncCallback(OnConnect),null); } catch (Exception e) { Close(); //Debug.LogError(e.Message); sockteClientState = netState.None; lock (NetworkManager.sEvents) { NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer()); } } }