-2

私はこのコードを持っています。クライアントからデータを正常に受信できますが、1 回しか受信できません。データを一度受信した後、クライアントがそれ以上送信しようとすると、サーバーはデータを受信して​​いません。誰でも助けることができますか?

    private void startListening()
    {
        TcpListener server = null;


        try
        {

            server = new TcpListener(IPAddress.Parse("127.0.0.1"), 7079);

            server.Start();

            Byte[] bytes = new Byte[256];
            String data = null;

            //Enter listening loop
            while (true)
            {

                addLog("Waiting for push.");

                TcpClient client = server.AcceptTcpClient();
                addLog("Push request received, accepted.");

                data = null;

                NetworkStream stream = client.GetStream();

                int i;

                //Loop to receive all data
                while((i = stream.Read(bytes, 0, bytes.Length))!=0)
                {
                    //Translate data bytes to ASCII string
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);

                    //Process data
                    data = data.ToUpper();

                    byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                    //send response
                    stream.Write(msg, 0, msg.Length);
                    addLog("Received: '" + data + "'");
                }

                //End ALL Connections
                client.Close();
                server.Stop();
            }
        }
        catch(SocketException e)
        {
            addLog("SocketException: " + e);
        }
        finally
        {
            //Stop listening for new clients
            MessageBox.Show("Finished.");
        }
    }
4

1 に答える 1

4

ループの最後でサーバーとクライアントの両方を閉じています ( server.Stop();)。外側のループは続行し、サーバーから新しい TcpClient を取得しようとします (これは、新しい接続が行われることを意味します) が、サーバーを既に停止しているため、それは決して起こりません (または、おそらく例外をスローします)。

于 2012-07-21T05:27:58.063 に答える