Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2015, 07:47   #1
tolikprankster
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 60
По умолчанию Сокеты и NetworkStream

Делаю Чат на сокетах через NetworkStream завернутый в StreamWriter и StreamReader

Вообщем создается соединение на клиенте:

Код:
IPEndPoint ipep = new IPEndPoint(Dns.GetHostEntry("localhost").AddressList[0], 2000);
            TcpClient client = new TcpClient(ipep);
            client.Connect(server);
            if (!client.Connected) 
                this.Close();
            ns = client.GetStream();
            sw = new System.IO.StreamWriter(ns, Encoding.UTF8) { AutoFlush = true };
            sr = new System.IO.StreamReader(ns, Encoding.UTF8);

Далее я отправляю сообщение на сервер через сериализацию:

Код:
MyMessage msg = new MyMessage("name", "pass", mt);
            b.Serialize(sw, msg);
            sw.Close();   // только после выполнения этого метода сервер получает сообщение
Вот только сервер получает сообщение только после того как я закрою поток на стороне клиента. Почему так? Можно как-то обойтись без закрытия потока? А то получается для каждого нового сообщения надо все заново создавать

П.С. пробовал sw.flush() вместо sw.Close(); - не работает

Последний раз редактировалось tolikprankster; 01.07.2015 в 09:01.
tolikprankster вне форума Ответить с цитированием
Старый 01.07.2015, 08:19   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

метод flush посмотрите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.07.2015, 08:44   #3
tolikprankster
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 60
По умолчанию

Пробовал, не помогает(
tolikprankster вне форума Ответить с цитированием
Старый 01.07.2015, 10:58   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте у ns сделать Flush
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сокеты Oleg34 C++ Builder 4 19.01.2014 19:40
сокеты в С TDrive C/C++ Сетевое программирование 6 03.03.2010 11:59
Сокеты Pelengeist Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.11.2009 11:09
Сокеты Pavelok Работа с сетью в Delphi 3 16.09.2009 16:57