Это потому, что ваша переменная buffor
на хосте имеет фиксированный размер и, таким образом, Encoding.ASCII.GetString
будет пытаться преобразовать полный байтовый массив обратно в строку, независимо от того, сколько байтов было фактически получено.
socket.Receive
возвращает количество байтов, которые были фактически получены. Используйте эту информацию для восстановления строки:
int bytesReceived = socket.Receive(buffor);
string wiadomość = Encoding.ASCII.GetString(buffor, 0, bytesReceived);
См. Encoding.ASCII.GetString и Socket.Receive для справки.
Теперь это должно работать для вашего крошечного примера. Но имейте в виду, что вы можете получить больше байтов, чем может занять ваш буфер одновременно. Таким образом, вы должны сделать что-то вроде:
string messageReceived = "";
int bytesReceived = 0;
do
{
bytesReceived = socket.Receive(buffor)
messageReceived += Encoding.ASCII.GetString(buffor, 0, bytesReceived);
} while(bytesReceived >= buffor.Length)
// now messageReceived should contain the whole text