private void ConnectCallback(IAsyncResult ar) { if (connectCallback != null) { connectCallback(this); } try { IsConnected = client.Connected; var stream = client.GetStream(); stream.BeginRead(readBuffer, 0, READ_BUFFER_SIZE, Read, null); } catch (Exception ex) { if (connectCallback != null) { connectCallback(false); } Debug.LogException(ex); } }
public async Task InitSocket(string ipAddress) { #if !UNITY_EDITOR socket = new StreamSocket(); await socket.ConnectAsync(new HostName(ipAddress), "4269"); reader = new BinaryReader(socket.InputStream.AsStreamForRead()); writer = new BinaryWriter(socket.OutputStream.AsStreamForWrite()); #else socket = new TcpClient(); await socket.ConnectAsync(ipAddress, 4269); reader = new BinaryReader(socket.GetStream()); writer = new BinaryWriter(socket.GetStream()); #endif running = true; IsConnected = true; writer.Write(20); // We request 20 fps here writer.Flush(); StartReceivingThread(); }
private void ConnectCallback(IAsyncResult result) #endif { //We can get here is the connection fails and the monotor thread // calls close. We should just do nothing at this point #if __WINDOWS__ if (client == null || !connected) { return; } if (stopped) { if (connected) { client.Dispose(); } return; } #else if ((client != null && !client.Connected)) { return; } if (stopped) { if (client.Connected) { client.Close(); } return; } clientStream = GSTlsClient.WrapStream(client.GetStream(), remotehost); #endif //Each time a tcp connection is established we re-authenticate try { LoginCommand loginCmd = new LoginCommand(session.ConnectToken); Send(loginCmd); Packet p = PooledObjects.PacketPool.Pop(); PositionStream rss = PooledObjects.PositionStreamPool.Pop(); #if __WINDOWS__ rss.Wrap(client.InputStream.AsStreamForRead()); #else rss.Wrap(clientStream); #endif int bytesRead = 0; while ((bytesRead = read(rss, p)) != 0) { OnPacketReceived(p, bytesRead); PooledObjects.PacketPool.Push(p); p = PooledObjects.PacketPool.Pop(); } PooledObjects.PacketPool.Push(p); PooledObjects.PositionStreamPool.Push(rss); } #if __WINDOWS__ /*catch (AggregateException exception) * { * foreach (Exception ex in exception.InnerExceptions) * { * System.Diagnostics.Debug.WriteLine(ex); * } * }*/ #endif catch (Exception e) { if (session != null && !stopped) { session.ConnectState = GameSparksRT.ConnectState.Disconnected; session.Log("ReliableConnection", GameSparksRT.LogLevel.DEBUG, e.Message); try{ session.OnReady(false); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } } } }