Как обеспечить разделение сообщений в сокетеC#

Место общения программистов C#
Ответить
Anonymous
 Как обеспечить разделение сообщений в сокете

Сообщение Anonymous »

В настоящее время у меня проблема: сообщения должны приходить на сервер раздельно.

Код: Выделить всё

private Encoding _encode = Encoding.Default;

public Encoding DataEncoding
{
get
{
return _encode;
}
set
{
_encode = value;
}
}

Код: Выделить всё

public void Send(string data)
{
Task.Run(() =>
{
if (this.ConnectionState != ConnectionStatus.Connected)
{
this.ConnectionState = ConnectionStatus.SendFail_NotConnected;
return;
}

var bytes = _encode.GetBytes(data);
SocketError err = new SocketError();
this._client.Client.Send(bytes, 0, bytes.Length, SocketFlags.None, out err);
if (err != SocketError.Success)
{
Action doDCHost = new Action(DisconnectByHost);
doDCHost.Invoke();
}
});
}
Функция для вызова метода Socket.Send совершенно проста.
Строка, которую необходимо отправить, выглядит следующим образом
STX-MESSAGESTRING-ETX

Однако, если нужно отправить много строк, сообщение фрагментируется.
Сервер получает сообщение следующего вида:

STX-MESSAGESTRING-ETXSTX-MESSAGESTRING2-ETXSTX-MESSAGESTRING3-ETX
< /blockquote>
Как лучше всего этого не допустить? К сожалению, нет флага, указывающего, что сокет в данный момент пуст или что-то в этом роде.

Подробнее здесь: https://stackoverflow.com/questions/788 ... the-socket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»