У меня проблема, что я хочу отправить большую строку через SocketConnection, но я не могу получить строку сразу, потому что сеть ограничена до 1500 байтов, так как я могу получить все байты над Socket без использования TCPClient, или это просто невозможно.Как получить большой поток данных через соединение сокета - без TCPClient
public string ReceiveString(Socket connection)
{
byte[] buffer = new byte[1048576];
int recBytes = connection.Receive(buffer);
return UnicodeEncoding.Unicode.GetString(buffer, 0, recBytes);
}
Thats, что я до сих пор.
Если это невозможно, чтобы получить его через Socket, могу ли я получить EndPoint из Socket, чтобы использовать TCPClient как «последний вариант»?
Вам нужно буквально реализовать [уровень протокола] (https://en.wikipedia.org/wiki/OSI_model#Layer_4:_Transport_Layer) самостоятельно, чтобы разделить данные на пакеты и получить (объединить) их. – Sinatr
Вы не можете. TCP разбивает каждое сообщение на дейтаграммы ~ 1500 байт. Вы используете синхронный метод Receive(), когда вы должны использовать асинхронный метод. Вам нужно добавить завершающий символ к вашей функции передачи, чтобы функция приема могла продолжить чтение 1500 дейтаграмм до тех пор, пока не будут найдены конечные символы. – jdweng
Не имеет ли TCP какой-то конечной последовательности, о которой я говорил, я слышал что-то о \ 0? – Silent3241