Я использую класс .NET Socket .
По сути, моя программа - отправлять команды XML через TCP на мой сервер (на котором запущены некоторые сторонние сервисы), и он отправляет обратно ответ XML.
То, что я хотел сделать, - это отправлять и получать несколько раз, не закрывая сокет, потому что сервер, кажется, замедляется, если я открываю и закрываю сокет слишком много раз за короткий период времени.
Урезанная версия моего кода:
//Connects to server
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint("123.123.123.123", 8199);
socket.Connect(ipe);
//Send my message
int sent = sock.Send(buffer, buffer.Length, SocketFlags.None); //buffer contains my XML data
//Receives respond from server
byte[] buf = new byte[65536];
int ret = socket.Receive(buffer, 0, 65536, SocketFlags.None);
//Send my message again without closing the socket
sent = sock.Send(buffer, buffer.Length, SocketFlags.None); //buffer contains my XML data
//Receives respond from server failed..
ret = socket.Receive(buffer, 0, 65536, SocketFlags.None);
Отправка / получение работает в первый раз, но не во второй раз. Во второй раз выдается исключение «Существующее соединение было принудительно закрыто удаленным хостом». Что мне нужно сделать, прежде чем я смогу выполнить еще одну отправку / получение?
Большое спасибо за чтение.