C#接受一个tcp网络流
我对TCP侦听器有问题。 情况如下: -我正在接收TCP数据包(每个8192字节),我想将从NetworkStream接收到的数据转储到一个文件中(使用FileStream); -我看到的是,所有TCP数据包都到达TCP侦听器,但只有前8192字节被转储到文件中 我相信NetStream比IO对文件的操作要快。 我的代码是: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
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数据包?