我知道,在网络流做Flush
则什么也不做,发送数据不
这就是为什么我定义StreamWriter
这需要网络流作为构造函数的参数,然后我试图向客户发送信函S
告诉他他的联系是成功的。
private StreamReader srReceiver;
private StreamWriter swSender;
// Occures when a new client is accepted
private void AcceptClient()
{
srReceiver = new System.IO.StreamReader(TcpClient.GetStream());
swSender = new System.IO.StreamWriter(TcpClient.GetStream());
if (TcpClient.Available > 0)
{
char [] buff0 = new char[TcpClient.Available];
// Read the account information from the client
srReceiver.Read(buff0, 0, TcpClient.Available);
sUserNumber = new string(buff0);
// We got a response from the client
if (!string.IsNullOrEmpty(sUserNumber))
{
OraEntities Ent = new OraEntities();
var user = Ent.USERS.FirstOrDefault(usr => usr.USER_NUMBER == sUserNumber);
// Check user validity
if (user == null)
{
Console.WriteLine("No user has this number: " + sUserNumber);
return;
}
else
{
// Add the user to Active Users List and start listening for messages from him
Server.AddUser(this, sUserNumber);
// S means connected successfully
swSender.WriteLine("S");
swSender.Flush();
// Start the new tread that hosts the listener
thrReceive = new Thread(HandleInput);
thrReceive.Start();
}
}
else
{
CloseConnection();
return;
}
}
}
但是没有任何东西在线上发送(没有运行时异常)。
我错过了什么?
尝试添加CRLF(\ r \ n)的每行之后:swSender.WriteLine( “S \ r \ n”); –
在AcceptClient内部使用一个'using(Stream s = TcpClient.GetStream())来代码,然后直接写入流而不是使用流写入器可能是值得的。 – Gavin
@DarrenDavies试过了,没有工作。 –