| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > TcpClient |
| Автор: Aline 2.5.2007, 13:10 | ||
| Всем привет! Дело в том, что мне надо написать клиента, работающего по протоколу TCP. Вернее переписать программу сделанную на C++ Builder. В Билдере был компонент ClientSocket, здесь насколько я поняла использутся TcpClient. Как подключиться я поняла как, но вот не поняла как получать данные. В Билдере было событие OnRead, т.е. когда приходили пакеты от сервера срабатывало это событие и дальше можно было получить пришедшие данные и работать с ними. В VS я этого не нашла. Конечно есть примеры в MSDN, но мне почему достаточно сложно в этом разобраться и потом, как читать данные, нужно заводить таймер? И в таймере вызывать read?
Что это за процедура: static void Connect(String server, String message) ? Может у кого то есть уже готовая программка небольшая, которую можно посмотреть в качестве примера? |
| Автор: QryStaL 2.5.2007, 23:09 |
| Тебе нужно использовать классы TcpListener и TcpClient. Пример здесь: http://www.rsdn.ru/article/dotnet/dotnetchat.xml#EQEAC |
| Автор: Aline 4.5.2007, 10:09 | ||
Сколько не пробую разных примеров и из ссылки и из MSDN не получается у меня прочесть то, что приходит с сервера. На сервер данные отправляются, а вот считать в клиенте что сервер ответил не могу. Гляньте код:
или может надо ещё tcpListener подключить, чтоб он прослушывал порт? |
| Автор: tol05 4.5.2007, 10:22 | ||||||
Извини, а почему у тебя запись и чтение не в цикле? После
сразу идет
Как может networkStream стать CanRead, когда он даже еще не начал передавать? И сразу вываливаешься из Main, astalavista, типа Так нельзя Нужно как минимум сделать в Main
тогда и будет клиент крутиться то на прием, то на передачу. А еще лучше исп. не networkStream.Read, networkStream.Write, а асинхронные их варианты, да с callback-ами. Или отдельные потоки на запись и чтение. Но главное, не вываливаться из Main. P.S. Немного погорячился, Read будет держать поток пока не передаст. Но все равно не факт, что условия на прием успеют выполнится. Так что все остальное - в силе. |
| Автор: Aline 4.5.2007, 12:18 |
| tol05, потому что раньше я работала с Билдером, а с этим только-только начала знакомиться. И программу мне надо переделать на VS, C#. Я понимаю, что где-то неправильно, но где именно - нет. А вообще, честно говоря, не совсем понимаю как это будет всё работать. |
| Автор: mr.DUDA 5.5.2007, 18:40 |
| Aline, ну tol05 в принципе написал как оно должно работать. |