C# 如何在通过套接字发送文件时给出符号并退出不定式循环
我试图从cleint发送一个文本文件并在服务器端写入它,但我不确定如何退出不定式while(true)循环。这是我的代码,非常简单 客户C# 如何在通过套接字发送文件时给出符号并退出不定式循环,c#,sockets,C#,Sockets,我试图从cleint发送一个文本文件并在服务器端写入它,但我不确定如何退出不定式while(true)循环。这是我的代码,非常简单 客户 byte[] msg = File.ReadAllBytes(@"C:\TCPIP\test_big.txt"); int bytesSent = sender.Send(msg); 服务器 while (true) { Console.WriteLine("Waiting for a connection..."); // Program
byte[] msg = File.ReadAllBytes(@"C:\TCPIP\test_big.txt");
int bytesSent = sender.Send(msg);
服务器
while (true)
{
Console.WriteLine("Waiting for a connection...");
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
data = null;
string outputPath = @"C:\output\2.txt";
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
//I need a "break;" here...
}
File.WriteAllText(outputPath, data);
Console.WriteLine(File.Exists(outputPath) ? "File received." : "File not received.");
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
我用了…的例子
所以,我的问题是,当我收到所有字节时,如何退出while循环?
谢谢。如果传入数据为空,请停止读取
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
if(bytesRec <= 0)
break;
data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
}
while(true)
{
字节=新字节[1024];
int bytesRec=handler.Receive(字节);
if(bytesRec如果传入数据为空,则停止读取
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
if(bytesRec <= 0)
break;
data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
}
while(true)
{
字节=新字节[1024];
int bytesRec=handler.Receive(字节);
在MSDN示例中,if(bytesRec)会一直等待,直到它接收到您删除的标记-因此您需要一种类似的方式来表示消息的结尾是的,这是真的。但我不确定如何用文件实现这一点。我可以用“数据”实现这一点但是,如果我正在发送一个大文件或一个不是txt的文件,该怎么办…@auburg您可以发送一个文件,然后再发送另一个文件。问题是,我的while循环只能使用byte[]msg.如果这样做了,我可以处理其他任何事情,比如,但是如何达到这一点?这是在发送块和处理不定式循环时的问题。@auburg但您正在将字节转换为字符串,不是吗,即data+=Encoding.ASCII.GetString(bytes,0,bytesRec);If(data.IndexOf(“”>-1){break;}
?在MSDN示例中,它会一直等待,直到收到您删除的标记-因此您需要一种类似的方式来表示消息的结尾是的,这是真的。但我不确定如何用文件实现这一点。我可以用“数据”实现这一点但是,如果我正在发送一个大文件或一个不是txt的文件,该怎么办…@auburg您可以发送一个文件,然后再发送另一个文件。问题是,我的while循环只能使用byte[]msg.如果这样做了,我可以处理其他任何事情,比如,但是如何达到这一点?这是在发送块和处理不定式循环时的问题。@auburg但您正在将字节转换为字符串,不是吗,即data+=Encoding.ASCII.GetString(bytes,0,bytesRec);If(data.IndexOf(“”>-1){break;}
?