Привет Я пытаюсь отправить строку с клиента на сервер. Это не работает, поэтому я пытаюсь проверить функции ниже, отправив данные и получая данные на одном компьютере.Передача и получение данных C# с использованием сетевого потока
Проблема, с которой я столкнулся, заключалась в том, что _serverStream.DataAvailable
в ReceiveData()
всегда возвращает false. Как проверить правильность работы обеих функций? Не удается ли _serverStream
отправлять/получать данные?
public void SendData(string dataToSend)
{
if (string.IsNullOrEmpty(dataToSend))
return;
_serverStream = _serverClient.GetStream();
byte[] outStream = Encoding.UTF8.GetBytes(dataToSend);
_serverStream.Write(outStream, 0, outStream.Length);
//_serverStream.Flush();
}
public string ReceiveData()
{
StringBuilder message = new StringBuilder();
_serverStream = _serverClient.GetStream();
_serverStream.ReadTimeout = 100;
while (true)
{
if (_serverStream.DataAvailable)
{
int read = _serverStream.ReadByte();
if (read > 0)
{
message.Append((char)read);
}
else
{
break;
}
}
else if (message.ToString().Length > 0)
{
break;
}
}
return message.ToString();
}
Я называю SendData()
и ReceiveData()
, как показано ниже:
tcpclient.SendData(username);
string test = tcpclient.ReceiveData();
MessageBox.Show(test);
Ваше использование DataAvailable является ошибкой. Неправильно используются почти все способы использования DataAvailable. Найдите DataAvailable, чтобы узнать, почему. – usr