Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.205.5] |
|
Сообщ.
#1
,
|
|
|
Есть сервер с сокетом, который выдает ответы на запросы. Связь с ним нормально работает через модем. Необходимо подключиться к нему с помощью программы на C# через сетевую карту на локальном компьютере. Пытаюсь сделать это с помощью кода ниже. Вместо myIPAddress и myPort в нем указаны значения IP-адреса и порта на сервере. Отправляю запрос на сервер и получаю ответ. Но после запроса на сервер с клиента отправляется несколько пустых строчек, это видно в логах на сервере. При связи через модем с использованием команд модема в готовой программе такого нет. Как сделать так, чтобы клиент не отправлял пустых строк на сервер после запроса, ждал ответа с сервера, а при необходимости снова отправлял запрос? Попытка закрыть, а потом снова открыть соединение выдает исключение Cannot access a disposed object, и все равно отправляется несколько пустых строк. Поиском нашел только одну ссылку с похожей проблемой.
https://stackoverflow.com/questions/4450575...g-empty-message Автор вопроса сказал, что ему помог первый ответ в теме, у меня он не решает проблему, сервер продолжает отправлять пустые сообщения. private void button1_Click(object sender, EventArgs e) { byte[] bytes = new byte[1024]; IPAddress ipAddress = IPAddress.Parse("myIPAddress"); IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, myPort); Socket mySocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); mySocket.Connect(ipEndPoint); mySocket.Send(Encoding.UTF8.GetBytes("test\r"), 0, 4, SocketFlags.None); Thread.Sleep(100); mySocket.Receive(bytes); MySocket.Shutdown(SocketShutdown.Both); MySocket.Close(); MessageBox.Show(Encoding.UTF8.GetString(bytes)); } Ответ по ссылке, который у меня не решает проблему. private void ReceiveMessage() { while (true) { if(_client.Available > 0) { byte[] buffer = new byte[1024]; _client.Receive(buffer); Console.WriteLine("A message has been received : " + Encoding.ASCII.GetString(buffer)); } } } |