C#接受一个tcp网络流

C#接受一个tcp网络流,c#,tcp,listener,filestream,networkstream,C#,Tcp,Listener,Filestream,Networkstream,我对TCP侦听器有问题。 情况如下: -我正在接收TCP数据包(每个8192字节),我想将从NetworkStream接收到的数据转储到一个文件中(使用FileStream); -我看到的是,所有TCP数据包都到达TCP侦听器,但只有前8192字节被转储到文件中 我相信NetStream比IO对文件的操作要快。 我的代码是: try { // Set TcpListener on port 8 Int32 portN = 8; Tc

我对TCP侦听器有问题。 情况如下: -我正在接收TCP数据包(每个8192字节),我想将从NetworkStream接收到的数据转储到一个文件中(使用FileStream); -我看到的是,所有TCP数据包都到达TCP侦听器,但只有前8192字节被转储到文件中

我相信NetStream比IO对文件的操作要快。 我的代码是:

    try
    {
        // Set TcpListener on port 8
        Int32 portN = 8;
        TcpListener server = new TcpListener(IPAddress.Any, portN);

        // Start listening for client requests
        server.Start();
        Console.Write("Waiting for connection... ");

        // Define File Name
        string RcvFileName = @"c:\ethernet\out_file.raw";

        // Buffer for reading data
        int NrBytesRec;
        Byte[] RecData = new Byte[8192];

        // enter into listening loop
        while (true)
        {
            // Perform a blocking call to accept requests.
            // You can also user server.AcceptSocket() here.
            TcpClient client = server.AcceptTcpClient();
            Console.WriteLine("Connected!");

            // Get a stream object for reading and writing
            NetworkStream netstream = client.GetStream();

            // Append data into file
            FileStream fs_wr = new FileStream(RcvFileName, FileMode.Append, FileAccess.Write);

            // Dump data
            while ((NrBytesRec = netstream.Read(RecData, 0, RecData.Length)) > 0)
            {
                fs_wr.Write(RecData, 0, NrBytesRec);
                Console.WriteLine("Received: {0}", NrBytesRec);
            }

            netstream.Close();
            fs_wr.Close();
            //client.Close();    
        }

在调用
fs_wr.Write
后,尝试清空
RecData
数组,因为您已经写出了字节,不再需要它们了。代码看起来不错。调试发送方。它没有发送您期望的内容。我只是使用您提供的代码进行了测试:@usr是正确的。它对我非常有效。您发送的不是您期望的。谢谢!您是否尝试使用多个TCP数据包?