Работа с сокетами: клиент-сервер работает только из под отладки - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь осилить сетевое программирование, отойдя чуть дальше простых примеров. В отладчике работает на 50%, а при запуске из консоли не работает вообще. отрывок кода клиента:
* * *
        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
В общем создается поток запускающий ClientReadThread(), из Stream gstm вытягиваю первые два байта - это размер пакета (введен воизбежание склеивания отдельных пакетов). Затем в куче под размер пакета выделяется массив. Ну и читаем пока не примем весь пакет.. Так вот в режиме отладки, если не спеша переходить по точкам останова, то все гуд. Если запустить собранное приложений из консоли.. то ничего. Даже ексепшн не вываливается. Буду очень благодарен, если кто-то потратит свое время на обьяснение.

Решение задачи: «Работа с сокетами: клиент-сервер работает только из под отладки»

textual
Листинг программы
client.Connect("localhost", 5555); //или какой там у вас порт

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5
Похожие ответы