Работа с сокетами: клиент-сервер работает только из под отладки - C#
Формулировка задачи:
Пытаюсь осилить сетевое программирование, отойдя чуть дальше простых примеров. В отладчике работает на 50%, а при запуске из консоли не работает вообще.
отрывок кода клиента:
В общем создается поток запускающий ClientReadThread(), из Stream gstm вытягиваю первые два байта - это размер пакета (введен воизбежание склеивания отдельных пакетов). Затем в куче под размер пакета выделяется массив. Ну и читаем пока не примем весь пакет.. Так вот в режиме отладки, если не спеша переходить по точкам останова, то все гуд. Если запустить собранное приложений из консоли.. то ничего. Даже ексепшн не вываливается.
Буду очень благодарен, если кто-то потратит свое время на обьяснение.
* * * public static System.IO.Stream gstm; //link stream public static System.Net.Sockets.TcpClient link; link = new System.Net.Sockets.TcpClient(); link.Connect("127.0.0.1", 2106); try { gstm = gamelink.GetStream(); } * * * private int readPktSize(Stream stream) { int size; size = stream.ReadByte(); size |= (stream.ReadByte() << 8); return size; } private void setSize_b2(ref byte[] array, int size) { array[0] = (byte) size; array[1] = (byte)(size >> 8); } private void ClientReadThread() { byte[] buffread = new byte[BUFFER_MAX]; int size = readPktSize(gstm); byte[] data = new byte[size]; setSize_b2(ref data, size); int cnt_read = new int(); int offset = 2; while (cnt_read < size - 2) { cnt_read += gstm.Read(data, offset+cnt_read, size-cnt_read-offset); } Console.WriteLine("{0} {1} {2} {3}", data[0], data[1], data[2], data[3]); Console.Read(); }//end of read data
Решение задачи: «Работа с сокетами: клиент-сервер работает только из под отладки»
textual
Листинг программы
client.Connect("localhost", 5555); //или какой там у вас порт
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д