我编写了一个使用TCP IP的控制台程序,我现在正在64位计算机上进行调试。 程序将ok连接到服务器并输出屏幕中的内容(直到我调试的错误发生) 我想记录这些屏幕输出,所以我做了
>theProgram.exe > screenrecord.txt
作为管道。这曾经很好用,但由于某种原因现在,程序以这种方式运行虽然连接到网络现在只接收0个字节(顺便说一下,我永远无法理解这个“0字节”是什么意思,我指出了文档在这方面充其量是模糊的)
为什么这种管道会影响TCP IP的行为? 什么是将输出派生到文本文件的方法?
有没有办法将这些输出放到文本文件和同时在屏幕上看到它们?
答案 0 :(得分:0)
控制台一次只能输出1台设备。 Console.SetOut
方法将输出定向到另一个设备,例如您的screenrecord.txt.
当您执行时显示>theProgram.exe > screenrecord.txt
将不会向屏幕显示任何输出。与Console.SetOut
相同,因为它被重定向到文件,它不会显示在控制台中。以下代码取自MS Console.SetOut Method (TextWriter)
下面显示了将控制台输出重定向到文件的一种方法。在此代码中... ScreenRecord.txt
将保存在项目的debug文件夹中,或者您也可以设置路径。
希望这有帮助。
static void Main(string[] args)
{
Console.WriteLine("Start Of Main - output not redirected yet!");
FileStream fs = new FileStream("ScreenRecord.txt", FileMode.Create);
// First, save the standard output.
TextWriter tmp = Console.Out;
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine("this writes to file 1");
printStuff();
Console.SetOut(tmp);
Console.WriteLine("this line not in file");
Console.ReadKey();
sw.Close();
}
private static void printStuff()
{
for (int i = 1; i < 7; i++)
Console.WriteLine("printStuff " + i);
}