簡體   English   中英

NetworkStream上的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM