Daniele Bartolini 12 lat temu
rodzic
commit
6ebdd32339
1 zmienionych plików z 8 dodań i 7 usunięć
  1. 8 7
      tools/gui/console/MainWindow.cs

+ 8 - 7
tools/gui/console/MainWindow.cs

@@ -24,7 +24,8 @@ public partial class MainWindow: Gtk.Window
 	// Connection
 	private string m_server_ip;
 	private int m_server_port;
-	private byte [] m_byBuff = new byte[4096]; // Recieved data buffer
+	private byte[] m_msg_header = new byte[4];
+	private byte[] m_byBuff = new byte[4096]; // Recieved data buffer
 	
 	public MainWindow (): base (Gtk.WindowType.Toplevel)
 	{
@@ -376,7 +377,7 @@ public partial class MainWindow: Gtk.Window
 	{
 		try
 		{
-			sock.BeginReceive(m_byBuff, 0, m_byBuff.Length, SocketFlags.None,
+			sock.BeginReceive(m_msg_header, 0, 4, SocketFlags.None,
 			                  new AsyncCallback(OnReceived), sock);
 		}
 		catch( Exception ex )
@@ -394,8 +395,10 @@ public partial class MainWindow: Gtk.Window
 			int nBytesRec = sock.EndReceive(ar);
 			if(nBytesRec > 0)
 			{
+				// Read the message
+				int bytesRead = sock.Receive(m_byBuff, BitConverter.ToInt32(m_msg_header, 0), SocketFlags.None);
 				// Wrote the data to the List
-				string received = Encoding.ASCII.GetString( m_byBuff, 0, nBytesRec );
+				string received = Encoding.ASCII.GetString( m_byBuff, 0, bytesRead );
 
 				JObject obj = JObject.Parse(received);
 				if (obj["type"].ToString() == "message")
@@ -479,10 +482,8 @@ public partial class MainWindow: Gtk.Window
 	protected void Send(string data)
 	{
 		try {
-			byte[] bytes = Encoding.ASCII.GetBytes (data);
-	
-			m_sock.BeginSend (bytes, 0, bytes.Length, 0,
-			                 new AsyncCallback (OnSent), m_sock);
+			m_sock.Send(BitConverter.GetBytes(data.Length));
+			m_sock.Send(Encoding.ASCII.GetBytes (data));
 		} catch (Exception e) {
 			Console.WriteLine (e.ToString ());
 		}