我将撰写一个简单的应用程序, 它将与服务器连接。 但是我想将简单的聊天命令发送正常( 见下文 < code> Console. readLine code > /code > ) 。 但是, 此脚本不会到达 < code>string message = console. readLine (); code >, 因为它在 < code> bytesRead = clientStream. read( 消息, 0, 4096); 被封锁 。
我想继续此脚本, 但是如果有字节来源, 它应该处理它们( 就像它现在正在做的那样) 如果没有字节来源, 它应该通过脚本, 等待用户输入 。 如何做到这一点?
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
// Blocks until a client sends a message
bytesRead = clientStream.Read(message, 0, 4096);
}
catch (Exception)
{
// A socket error has occured
break;
}
if (bytesRead == 0)
{
// The client has disconnected from the server
break;
}
// Message has successfully been received
ASCIIEncoding encoder = new ASCIIEncoding();
// Output message
Console.WriteLine("To: " + tcpClient.Client.LocalEndPoint);
Console.WriteLine("From: " + tcpClient.Client.RemoteEndPoint);
Console.WriteLine(encoder.GetString(message, 0, bytesRead));
// Return message
string Message = Console.ReadLine();
if (Message != null)
{
byte[] buffer = encoder.GetBytes(Message);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}