private void ReceiveCallback(IAsyncResult ar) { Socket socket = (Socket)ar.AsyncState; try { int received = socket.EndReceive(ar); if (received <= 0) { CloseClient(index); } else { byte[] dataBuffer = new byte[received]; Array.Copy(Buffer, dataBuffer, received); NetworkDataHandler.HandleNetworkInformation(index, dataBuffer); socket.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket); } } catch (Exception ex) { CloseClient(index); System.Diagnostics.Debug.WriteLine(ex); } }
public static void SetupServer() { for (int i = 0; i < Constants.MAX_CONNECTIONS; i++) { Clients[i] = new Client(); } ServerSocket.Bind(new IPEndPoint(IPAddress.Any, 8081)); ServerSocket.Listen(10); ServerSocket.BeginAccept(new AsyncCallback(AcceptCallback), null); NetworkDataHandler.InitializeNetworkPackages(true); NetworkDataHandler.SelectionReceived += NetworkDataHandler_SelectionReceived; }
private static void OnReceive() { byte[] sizeInfo = new byte[4]; byte[] receivedBuffer = new byte[1024]; int totalRead = 0, currentRead = 0; try { currentRead = totalRead = ClientSocket.Receive(sizeInfo); if (totalRead <= 0) { Console.WriteLine("Not connected to server."); } else { Console.WriteLine("Reading data..."); while (totalRead < sizeInfo.Length && currentRead > 0) { currentRead = ClientSocket.Receive(sizeInfo, totalRead, sizeInfo.Length - totalRead, SocketFlags.None); totalRead += currentRead; } int messageSize = 0; messageSize |= sizeInfo[0]; messageSize |= (sizeInfo[1] << 8); messageSize |= (sizeInfo[2] << 16); messageSize |= (sizeInfo[3] << 24); byte[] data = new byte[messageSize]; totalRead = 0; currentRead = totalRead = ClientSocket.Receive(data, totalRead, data.Length - totalRead, SocketFlags.None); while (totalRead < messageSize && currentRead > 0) { currentRead = ClientSocket.Receive(data, totalRead, data.Length - totalRead, SocketFlags.None); totalRead += currentRead; } Debug.WriteLine("Received message, handling"); NetworkDataHandler.HandleNetworkInformation(messageSize, data); } } catch { Console.WriteLine("Not connected to server."); } }
public void TryRegister(object obj, EventNetworkUpdate e) { dynamic get = JsonConvert.DeserializeObject(e.Data); if ((JsonTypes)get.JsonType == JsonTypes.RegisterData) { var response = JsonConvert.DeserializeObject <RegisterData>(e.Data); if (response.Code == 0) { User.Id = response.Id; ConsoleExtension.PrintText("Регистрация на сервере успешно произведена."); } else { ConsoleExtension.PrintError("Не удалось зарегистрироваться на сервере: " + response.Description); } EventUpdate -= TryRegister; } }
//private Socket _socket; public Connect(string url, int port, User user) { //_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //_socket.Connect(IPAddress.Parse(url), port); User = user; _server = new TcpClient(); try { _server.Connect(url, port); } catch (SocketException) { Console.WriteLine($"Не удалось подключится к {url}: {port}"); return; } if (_server.Connected) { _networkEnabled = true; _read = new StreamReader(_server.GetStream()); _write = new StreamWriter(_server.GetStream()); _timer = new System.Timers.Timer(25); _timer.Elapsed += DataEngine; _timer.Start(); var registerData = new RegisterData { Name = user.Name }; SendData(registerData); EventUpdate += ReceiveMessage; EventUpdate += TryRegister; } }
private void Start() { inputGate = new InputGate(); outputGate = new OutputGate(); OnHostSet.Invoke("Host: " + host); inputGate.client = this; outputGate.client = this; NetworkDataHandler.client = this; NetworkDataHandler.InitializePackages(); NetworkDataHandler.modelGeometry = modelGeometry; //var mat = Matrix4x4.TRS(modelGeometry.position, modelGeometry.rotation, modelGeometry.localScale); var mat = Matrix4x4.identity; mat.m01 = mat.m02 = mat.m03 = 1; mat.m10 = mat.m12 = mat.m13 = 1; mat.m20 = mat.m21 = mat.m23 = 1; mat.m30 = mat.m31 = mat.m32 = 1; var convertMatrix = Matrix4x4.identity; convertMatrix.m00 = -1.0f; mat *= convertMatrix; convertMatrix *= mat; Debug.Log(convertMatrix); }
public async Task ReceiveDataAsync() { byte[] inputBuffer = null; #if !UNITY_EDITOR while (true) { string errorLog = string.Empty; var stream = ClientSocket.InputStream.AsStreamForRead(); byte[] inputDataTypeBuffer = new byte[2]; byte[] inputLengthBuffer = new byte[4]; await stream.ReadAsync(inputDataTypeBuffer, 0, 2); NetworkDataType inputType = (NetworkDataType)BitConverter.ToInt16(inputDataTypeBuffer, 0); await stream.ReadAsync(inputLengthBuffer, 0, 4); var inputLength = BitConverter.ToInt32(inputLengthBuffer, 0); inputBuffer = new byte[inputLength]; await stream.ReadAsync(inputBuffer, 0, inputBuffer.Length); NetworkDataHandler.HandleNetworkData(inputBuffer, inputType); } #endif }
public static void ConnectToServer() { Console.WriteLine("Connecting to server..."); NetworkDataHandler.InitializeNetworkPackages(); ClientSocket.BeginConnect("192.168.1.101", 8081, new AsyncCallback(ConnectCallback), ClientSocket); }