private static void CheckMessageID(StateObject state, Socket handler) { TCPMessageID ID = (TCPMessageID)state.buffer[0]; switch (ID) { case TCPMessageID.Message: PrintMessageToConsol(); break; case TCPMessageID.MazeIsReceived: Send(handler, itemGen.ItemMessageArray); break; case TCPMessageID.ItemPositionIsReceived: Send(handler, trapGen.TrapMessageArray); break; case TCPMessageID.Item: SendMessageToTheOtherClients(handler); break; case TCPMessageID.Trap: SendMessageToTheOtherClients(handler); break; } }
public void send(TCPMessageID id, Field message) { lock (tcpClient) { message.addField("messageID").setInt((int)id); message.addField("messageCounter" + messageCounter++).setInt((int)id); //Debug.Log("Sent to " + clientEndpoint + ": " + message); bool invalid = true; for (int i = 0; i < 5 && invalid; i++) { invalid = false; byte[] compressed = message.compress(); try { new Field(compressed); } catch (Exception ex) { invalid = true; Debug.LogWarning("Tried to send invalid message\n" + ex); continue; } connection.Write(compressed, 0, compressed.Length); return; } Debug.LogError("Unable to compress message\n" + message); } }
public void Send(TCPMessageID messageID, Socket client, string data) { byte[] byteForMessageID = new byte[1]; byteForMessageID[0] = Convert.ToByte(messageID); byte[] byteData = Encoding.ASCII.GetBytes(data + "<EOF>"); byte[] byteForSend = byteForMessageID.Concat(byteData).ToArray(); client.BeginSend(byteForSend, 0, byteForSend.Length, 0, new AsyncCallback(SendCallback), client); }
public static void send(TCPMessageID id, Field message) { lock (tcpClient) { message.addField("messageID").setInt((int)id); byte[] compressed = message.compress(); connection.Write(compressed, 0, compressed.Length); } }
private void ReceiveCallback(IAsyncResult ar) { try { StateObject state = (StateObject)ar.AsyncState; Socket client = state.workSocket; int bytesRead = client.EndReceive(ar); if (bytesRead > 0) { TCPMessageID ID = (TCPMessageID)state.buffer[0]; switch (ID) { case TCPMessageID.Maze: Send(TCPMessageID.Message, client, ("I've received the mazeWalls! " + bytesRead.ToString())); Send(TCPMessageID.MazeIsReceived, client, "I've received the mazeWalls!"); //remove the ID from the array state.buffer = state.buffer.Where((source, index) => index != 0).ToArray(); ConvertTheMessageToMap(state, bytesRead); break; case TCPMessageID.Trap: //remove the ID from the array state.buffer = state.buffer.Where((source, index) => index != 0).ToArray(); //write the healthpoint to the label state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead)); response = state.sb.ToString(0, state.sb.Length - 6); break; case TCPMessageID.TrapPosition: Send(TCPMessageID.Message, client, ("I've received the traps! " + bytesRead.ToString())); //remove the ID from the array state.buffer = state.buffer.Where((source, index) => index != 0).ToArray(); ConvertTheMessageToItem(state, bytesRead); break; } client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } if (state.sb.Length > 0) { state.sb = null; } receiveDone.Set(); } catch (Exception e) { // Console.WriteLine(e.ToString()); } }
public static byte[] CreateMessage(TCPMessageID id, List <byte> list) { byte[] messageArray = new byte[MESSAGE_ARRAY_SIZE]; messageArray[0] = Convert.ToByte(id); string str = ""; try { str = CreateStringFromList(list); } catch (NullReferenceException e) { Console.WriteLine(e); } for (int i = 0; i < messageArray.Length - 1; i++) { messageArray[i + 1] = Convert.ToByte(SplitStringToEightChar(str, i), 2); } return(messageArray); }