private IEnumerator Start() { _client = FlexiSocket.Create("::1", 1366, Protocols.BodyLengthPrefix); //ipv6 yield return(new WaitForSeconds(1)); // wait for server to startup since bot server and clients are in the same scene using (var connect = _client.ConnectAsync()) { yield return(connect); if (!connect.IsSuccessful) { Debug.LogException(connect.Exception); yield break; } Debug.Log("Connected", this); } while (_client.IsConnected) { using (var receive = _client.ReceiveAsync()) { yield return(receive); if (!receive.IsSuccessful) { if (receive.Exception != null) { Debug.LogException(receive.Exception); } if (receive.Error != SocketError.Success) { Debug.LogError(receive.Error); } _client.Close(); yield break; } Debug.Log("Client received: " + Encoding.UTF8.GetString(receive.Data), this); } var send = _client.SendAsync("Hey I've got your message"); yield return(send); if (!send.IsSuccessful) { if (send.Exception != null) { Debug.LogException(send.Exception); } if (send.Error != SocketError.Success) { Debug.LogError(send.Error); } _client.Close(); yield break; } Debug.Log("Message sent", this); GameObject.CreatePrimitive(PrimitiveType.Cylinder); } }
private void Update() { ISocketClient socketClient = null; int nCount = m_SocketList.Count; for (int i = 0; i < nCount; ++i) { socketClient = m_SocketList[i]; if (socketClient.CanClose()) { socketClient.Close(); m_SocketList.RemoveAt(i); break; } } //推动socket client 更新 if (null != m_CurrentSocketClient) { m_CurrentSocketClient.Update(); } //处理解包 ProccessMessage(); }
public void Close() { if (_socket == null) { return; } _socket.Close(); _socket = null; }
private void OnDestroy() { mSocketClient.Close(); mSocketClient = null; UnsubscribeEvent(); // BluetoothLEHardwareInterface.DeInitialize (delegate { // }); }
/// <exception cref="ArgumentException"></exception> /// > /// <exception cref="SocketException"></exception> /// > public OperationResponseDto SendOperation(OperationDto operationDto) { //PRE-CONDITION //TODO LOGGING operationDto.Params.ToList() .ForEach(x => CodeContract.PreCondition <ArgumentException>(x >= 0 && x <= 65535)); var paramBytes = new List <byte>(); foreach (var param in operationDto.Params) { paramBytes.Add(GetDataType(param)); paramBytes.AddRange(ValueToBytes(param)); } var payload = new List <byte> { operationDto.Operation, operationDto.Device }.Concat(paramBytes).ToArray(); try { _socketClient.Connect(); _socketClient.Send(payload); var response = _socketClient.Recieve(); //POST-CONDITIONS //TODO LOGGING CodeContract.PostCondition <SocketException>( !response.SequenceEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 })); CodeContract.PostCondition <ArgumentException>(response[1] > 0 && response[1] < 4); CodeContract.PostCondition <ArgumentException>(response[0] > 0); CodeContract.PostCondition <ArgumentException>(response.Length == 8); return(new OperationResponseDto { Status = response[0], Returns = BytesToValue(response.Skip(1).ToArray()) }); } finally { _socketClient.Close(); } }
/// <summary> /// 解析数据并且传回 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="channel"></param> public static void AnalysisRequest <T>(NetChannel <T> channel) { // if (channel.recData == null) { return; } else { if (typeof(byte[]) == channel.recData.GetType()) { object data = channel.recData; byte[] req = (byte[])data; //说明是HTTP if (serviceHttp == null) { serviceHttp = new ServiceHttpProcessor(); } HttpRequest request = serviceHttp.ProcessRequestReturn(req); SrvRquest srvReq = null; object result = null; string json = null; if (request != null) { srvReq = CreateSrvReq(request); result = InvokeService(srvReq); } else { json = "解析HTTP错误,无法获取请求的参数或者服务名称"; } if (result != null) { json = StreamSerializer.JSONObjectToString <object>(result); } int streamLen = 1000; if (!string.IsNullOrEmpty(json)) { streamLen = json.Length * 2; } StreamBuffer stream = HTTPStream.GetInstance().GetStreamCompare(streamLen); serviceHttp.ProcessResult(json, request, stream.Buffer); stream.ResetSize((int)stream.Buffer.Length); stream.ResetPostion(); //重置位置; int len = stream.Size; //数据长度 byte[] tmp = null; ByteBuffer buffer = null; int position = 0; if (len < BufferManager.GetInstance().BufferSize) { //取出缓存Buffer buffer = BufferManager.GetInstance().GetBufferNum(1)[0]; tmp = buffer.buffer; position = buffer.Position; } else { tmp = new byte[len]; } ISocketChannel socket = channel.channel as ISocketChannel; if (socket != null) { stream.Buffer.Read(tmp, position, len); socket.SendData(tmp, position, len); socket.Close(); } if (buffer != null) { //释放取出的缓存 BufferManager.GetInstance().FreeBuffer(buffer); } HTTPStream.GetInstance().FreeBuffer(stream); } else { object data = channel.recData; SrvRquest req = (SrvRquest)data; object result = InvokeService(req); if (result != null) { ISocketClient <T> socket = channel.channel as ISocketClient <T>; if (socket != null) { socket.SendData(result); } socket.Close(); } } } }
private void OnDestroy() { mClient.Close(); mClient = null; }
private void OnDestroy() { client.Close(); client = null; }
public void Close() { _socketClient.Close(); }
public Task Stop() { _socketClient?.Close("关闭"); return(Task.CompletedTask); }
public void Close() { Client.Close(); }
public void DisConnect() { mSocketClient.Close(); mSocketClient.Disconnect(); }
/// <summary> /// 连接指定的服务器。 /// </summary> public bool Connect(Server server, AddressFamily addressFamily = AddressFamily.InterNetwork) { _networkAddressFamily = addressFamily; if (_socket != null) { _socket.Close(); _socket = null; } if (server == Server.Null || server == Server.CServer) { // 其他的服务器就不用连接了。 return(false); } var hServerAddress = _hServerAddress.Read(); var gServerAddress = _gServerAddress.Read(); string host = ""; int port = 0; switch (server) { case Server.PServer: host = GetHost(); port = GetPort(); break; case Server.HServer: host = hServerAddress; port = 11122; break; case Server.GServer: if (gServerAddress == null) { MyLog.ErrorWithFrame( name, string.Format("GameServer Address Error ") ); return(false); } host = gServerAddress.Ip; port = gServerAddress.Port; break; default: break; } MyLog.InfoWithFrame( name, string.Format("Connect gate server: {0}:{1}", host, port) ); #if UNITY_IOS var ios = _context.GetIosSDK(); if (addressFamily == AddressFamily.InterNetworkV6) { host = ios.GetIpV6(host); MyLog.InfoWithFrame(name, string.Format("convert to ipv6: {0}", host)); } #endif if (string.IsNullOrEmpty(host)) { return(false); } var socketFactory = _context.GetSocketFactory(); _socket = socketFactory.CreateSocket(); return(_socket.Connect(host, port, server, addressFamily)); }
public Task <bool> Close() { return(_client.Close()); }