// ACK送信 private void sendAck() { // パケット作成 var packet = new PacketData(1); packet.SetByte(0, AsciiCode.ACK); // パケット送信 socket.Send(packet); sendAckNum++; }
public void SendMessage(int id, byte[] messageBytes) { if (IsReadyForSend()) { byte[] idBytes = BitConverter.GetBytes(id); if (messageBytes != null && messageBytes.Length > 0) { byte[] dataBytes = new byte[sizeof(int) + messageBytes.Length]; Array.Copy(idBytes, 0, dataBytes, 0, idBytes.Length); Array.Copy(messageBytes, 0, dataBytes, idBytes.Length, messageBytes.Length); m_serverSocket.Send(dataBytes); } else { m_serverSocket.Send(idBytes); } } }
public override void Run(string[] args) { var port = 0; try { port = int.Parse(args[1]); } catch (Exception) { port = 3333; } var server = new TcpServerSocket(); _socket = server; server.OnDisconnect += onDisconnect; server.Listen(port); server.OnReceive += onReceive; Console.CancelKeyPress += onCancel; while (true) { server.Send(Encoding.UTF8.GetBytes(Console.ReadLine())); } }
public void TcpTest() { object monitor = new object(); lock (monitor) { bool clientMaySend = false; int payloadCounter = 0; Console.WriteLine("Starting server"); HashSet <Socket> connectedSockets = new HashSet <Socket>(); TcpServerSocket server = null; server = new TcpServerSocket(socket => { lock (monitor) { lock (connectedSockets) { Console.WriteLine("Server received client's connection"); connectedSockets.Add(socket); } } }, (sender, buffer, size) => { lock (monitor) { Console.WriteLine("SRec " + size); server.Send(sender, buffer, 0, size); } }, socket => { lock (connectedSockets) { Console.WriteLine("Server lost connection to client"); connectedSockets.Remove(socket); } }, connectedSockets, 1, Port); byte[] sendBuffer = new byte[DataSize]; _random.NextBytes(sendBuffer); Console.WriteLine("Starting client"); TcpClientSocket client = null; client = new TcpClientSocket(() => { lock (monitor) { Console.WriteLine("Client connected to server"); if (clientMaySend) { Console.WriteLine("Client not waiting for main thread"); } else { Console.WriteLine("Client waiting for main thread"); Monitor.Wait(monitor); } Console.WriteLine("Client sending first data"); client.Send(sendBuffer, 0, sendBuffer.Length); } }, error => { lock (monitor) { Console.WriteLine("Client failed to connect to server: " + error); } }, (buffer, size) => { lock (monitor) { Console.WriteLine("CRec " + size); AssertArrayContentsEqualInFirstArrayLengthRange(sendBuffer, buffer); if (++payloadCounter == PayloadCount) { Monitor.Pulse(monitor); } else { _random.NextBytes(sendBuffer); client.Send(sendBuffer, 0, sendBuffer.Length); } } }, () => Console.WriteLine("Client lost connection to server")); client.Start(Ip, Port); clientMaySend = true; Monitor.Pulse(monitor); Console.WriteLine("Main thread waiting"); Monitor.Wait(monitor); Console.WriteLine("Closing client"); client.Close(); Console.WriteLine("Closing server"); server.Close(); } }