Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.201.209] |
|
Сообщ.
#1
,
|
|
|
Привет всем. При работе с асинхронными сокетами возникла такая проблема: клиент отправляет команды на сервер и получает в ответ какие-то данные. Есть одна команда, приняв которую сервер постоянно отправляет данные клиенту, пока не придет команда остановки. Вопрос в том, как правильно организовать прием этих данных и отправку команды остановки, если сервер постоянно отправляет данные?
|
Сообщ.
#2
,
|
|
|
Malicious код в студию
|
Сообщ.
#3
,
|
|
|
Цитата Malicious @ как правильно организовать прием этих данных и отправку команды остановки Организовать чтение и запись в разных потоках. |
Сообщ.
#4
,
|
|
|
Отшельник
Код взял из примера по асинхронным сокетам тут же на форуме. А дальше что-то не могу сообразить. TerraGhost Был бы очень признателен за пример. |
Сообщ.
#5
,
|
|
|
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; namespace ExampleSockets.Server { internal static class Program { private static void Main () { TcpListener tl = new TcpListener (IPAddress.Loopback, 12345); tl.Start (); using (TcpClient connection = tl.AcceptTcpClient()) { ThreadPool.QueueUserWorkItem (obj => { using (StreamReader reader = new StreamReader (connection.GetStream ())) { while (true) { Console.WriteLine ("Recived: {0}", reader.ReadLine ()); } } }); using (StreamWriter writer = new StreamWriter (connection.GetStream ())) { while (true) { string sendingMessage = Console.ReadLine (); writer.WriteLine (sendingMessage); writer.Flush (); Console.WriteLine ("Sended: {0}", sendingMessage); } } } } } } using System; using System.IO; using System.Net.Sockets; using System.Threading; namespace ExampleSockets.Client { internal static class Program { private static void Main () { using (TcpClient connection = new TcpClient ("localhost", 12345)) { ThreadPool.QueueUserWorkItem (obj => { using (StreamReader reader = new StreamReader (connection.GetStream ())) { while (true) { Console.WriteLine ("Recived: {0}", reader.ReadLine ()); } } }); using (StreamWriter writer = new StreamWriter (connection.GetStream ())) { while (true) { string sendingMessage = Console.ReadLine (); writer.WriteLine (sendingMessage); writer.Flush (); Console.WriteLine ("Sended: {0}", sendingMessage); } } } } } } |
Сообщ.
#6
,
|
|
|
Спасибо! Сейчас буду экспериментировать.
|
Сообщ.
#7
,
|
|
|
Оп, а куда второй пример делся?
|
Сообщ.
#8
,
|
|
|
Большое спасибо за помощь, разобрался и решил проблему используя только асинхронные сокеты.
|