0

ポート 2000 に送信された情報を印刷しようとしていますが、取得できるのは「 System.Net.Sockets.NetworkStream」だけです。ストリームを文字列に変換する方法はありますか? または、ストリーム情報を直接出力する方法。

        static void Main(string[] args)
    {
        while (true)
        {
            TcpListener TL = new TcpListener(IPAddress.Any, 2000);
            TL.Start();
            Socket S = TL.AcceptSocket();
            Stream SS = new NetworkStream(S);
            string MSG = SS.ToString(); 
            Console.WriteLine(MSG);
        }
    }

編集:これがクライアントです

       static void Main(string[] args)
    {

            try
            {
                TcpClient TC = new TcpClient();
                TC.Connect("XXX.XXX.XXX.XXX", 2000);
                NetworkStream Writer = TC.GetStream();
                string MSG = Console.ReadLine();
                byte[] pack = Encoding.ASCII.GetBytes(MSG);
                Writer.Write(pack, 0, pack.Length);
                Writer.Flush();
            }
            catch
            {
                Console.WriteLine(" faild");
                Console.ReadLine();
            }


    }

PS:実行後にアプリケーションもクラッシュします

4

2 に答える 2

1

あなたのコードで:

SS.ToString();

いつも戻ってきSystem.Net.Sockets.NetworkStreamます!ToString()function は現在のオブジェクトを表す文字列を返すため、 a を使用StreamReaderしてストリームから行を読み取ることができます。

Stream SS = new NetworkStream(S);
StreamReader reader = new StreamReader(SS);
string MSG = reader.ReadLine();
Console.WriteLine(MSG);

もちろん、TCP は接続指向であるため、クライアントの前にサーバー プログラムを実行する必要があります。

于 2012-12-04T00:06:56.070 に答える
0

他の部分が文字列(文字列に変換できないバイナリデータではない)を送信している場合は、試すことができます

var s = new StreamReader(new NetworkStream(S));
s.Readline();
s.ReadToEnd(); //OR
于 2012-12-01T18:03:08.277 に答える