Код: Выделить всё
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();
}
});
}
Строка, которую необходимо отправить, выглядит следующим образом
STX-MESSAGESTRING-ETX
Однако, если нужно отправить много строк, сообщение фрагментируется.
Сервер получает сообщение следующего вида:
STX-MESSAGESTRING-ETXSTX-MESSAGESTRING2-ETXSTX-MESSAGESTRING3-ETX
< /blockquote>
Как лучше всего этого не допустить? К сожалению, нет флага, указывающего, что сокет в данный момент пуст или что-то в этом роде.
Подробнее здесь: https://stackoverflow.com/questions/788 ... the-socket
Мобильная версия