private void sendMessage(MessageItem messageItem) { Console.WriteLine("client ip: " + clientIP); try { TcpClient client = new TcpClient(clientIP, port); messageItem.UserName = this.hostIP; messageItem.MessageTime = DateTime.Now.ToString("h:mm:ss tt"); var jsonObjectToSend = Utilities.convertMessageItemToJSON(messageItem); var encapsulatedMessage = KarolProtocol.encapsulteMessageInProtocol(jsonObjectToSend); Console.WriteLine("json to send: " + jsonObjectToSend); //byte[] sendData = Utilities.stringToBytes(encapsulatedMessage); //for testing that it works byte[] sendData = Utilities.stringToBytes(jsonObjectToSend); NetworkStream stream = client.GetStream(); Console.WriteLine("byte len sent: " + sendData.Length); stream.Write(sendData, 0, sendData.Length); stream.Close(); client.Close(); } catch (System.Net.Sockets.SocketException e) { showNoValidIPDialogBox(); } }
public void StartHostServer() { IPAddress ip = Dns.GetHostEntry(hostIP).AddressList[0]; hostIP = ip.ToString(); TcpListener server = new TcpListener(ip, port); TcpClient client = default(TcpClient); try { server.Start(); Console.WriteLine("Server started..."); Console.Read(); } catch (Exception e) { Console.WriteLine(e.ToString()); Console.Read(); } while (true) { client = server.AcceptTcpClient(); string address = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); Console.WriteLine("Client connected with IP {0}", ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()); if (!usersObservableList.Contains(address)) { showConnectionRequestDialogBox(address); } else { byte[] receivedBuffer = new byte[10000000]; NetworkStream stream = client.GetStream(); stream.Read(receivedBuffer, 0, receivedBuffer.Length); this.Dispatcher.Invoke(() => { //thanks to this the integrity of the message is preserved try { var json = Utilities.bytesToString(receivedBuffer); var decapsulatedMessage = KarolProtocol.decapsulateMessage(json); var message = Utilities.convertJSONToMessageItem(decapsulatedMessage); conversationDict[address].Add(message); Utilities.saveInstanceOnDisk(conversationDict); updateConversationBox(message, address); } catch (IncorrectProtocolException e) { Console.WriteLine(e.ToString()); } }); Console.Read(); } } }