![](/img/trans.png)
[英]reading stream from network using networkstream and streamreader
[英]StreamReader on NetworkStream not reading line
我正在嘗試創建一個簡單的客戶端/服務器連接類。 在這個類中是一個服務器端客戶端,但它不會拾取寫入服務器NetworkStream的東西。 如果你想知道,我打算讓所有數據通過服務器程序,然后再發送給客戶端,所以我需要一些東西來處理NetworkStream上的所有數據(因此服務器端客戶端)。 這是我的班級:
public class ConnectionServer
{
public readonly IPAddress ServerIP;
public readonly IPAddress LocalIP;
public readonly int Port;
private TcpListener ServerIn;
private Socket ServerSocket;
private TcpClient ServerSideClient;
private NetworkStream NetStream;
public StreamReader ServerInput;
public StreamWriter ServerOutput;
public ConnectionServer(int port)
{
try
{
Port = port;
ServerIP = IPAddress.Parse(NetHelper.GetPublicIP());
LocalIP = IPAddress.Parse(NetHelper.GetLocalIP());
ServerIn = new TcpListener(IPAddress.Any, Port);
ServerIn.Start();
Console.WriteLine("Server Started At: " + ServerIP.ToString() + ":" + Convert.ToString(Port));
ServerSideClient = new TcpClient("localhost", Port);
ServerSocket = ServerIn.AcceptSocket();
Console.WriteLine("Server-Side Client Socket Accepted.");
NetStream = ServerSideClient.GetStream();
ServerInput = new StreamReader(NetStream);
ServerOutput = new StreamWriter(NetStream);
ServerOutput.AutoFlush = true;
Console.WriteLine("All Streams Initialized.");
ServerOutput.WriteLine("Testing Server-Side Client.");
Console.WriteLine("Test Message Sent.");
Console.WriteLine(ServerInput.ReadLine());
}
finally
{
}
}
~ConnectionServer()
{
ServerInput.Dispose();
ServerSideClient.Close();
}
}
它不會在Console.WriteLine(ServerInput.ReadLine());
上寫任何內容Console.WriteLine(ServerInput.ReadLine());
。 我無法弄清楚為什么它不會從流中獲取消息。 請幫助?
您當前的問題是您嘗試使用相同的流進行讀寫。 NetStream
是輸入流 - 來自客戶端的數據。 如果要寫入套接字,則需要從套接字創建流。
在編寫時,您正在寫入客戶端流。 您需要寫入服務器流。
我不明白為什么你在客戶端使用TcpClient
,在創建TcpListener
后在服務器端使用原始套接字。 你最好使用AcceptTcpClient 。 然后,您可以寫入該客戶端的流並從另一個流中讀取。
要從套接字創建NetworkStream
,請使用構造函數 。 不過,我強烈建議您切換到AcceptTcpClient
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.