• C#学习记录(五)第一次上机实验


    这一次上机实验的内容是关于CRC循环冗余校验的。虽然实验内容是用英语写的,逐句阅读并不难理解。

    实验内容简单来说是先要编写一个控制台应用程序,读取一个文件的内容,根据CRC循环冗余校验的规则进行运算,最后将运算的结果输出到控制台。

    然后编写一个窗体应用程序对这个控制台程序进行调用,读取用户在窗体中输入的文件路径,最后将校验后的内容输出到窗体当中显示。

    对于我,这次实验的难点主要并不在控制台程序中的校验过程的试验,而是C#中流的输入输出以及不同程序之间的连接通信。C#中的流的输入输出与我之前学习的C++的流输入输出有很大的不同,个人感觉相比C++要略微复杂一些。

    这是控制台程序中的输入输出的一些代码

     1  try
     2             {
     3                 FileStream fStream = new FileStream(args[0], FileMode.Open, FileAccess.Read);
     4 
     5                 BinaryReader binReader = new BinaryReader(fStream);
     6             byte message;
     7                 while (true)
     8                 {
     9                     message = binReader.ReadByte();
    10                     CalcCRC.CalculateCRC(message);
    11                 }
    12             }
    13             catch (EndOfStreamException e)
    14                 {
    15 
    16                 }

    这是窗体应用程序中调用控制台应用程序的代码

     1  private void buttonOK_Click(object sender, EventArgs e)
     2         {
     3             Process process = new Process();
     4             process.StartInfo.FileName = @"f:\C#\C#选修\Project1\Project1\bin\Release\Project1.exe";
     5             process.StartInfo.RedirectStandardInput = true;
     6             process.StartInfo.RedirectStandardOutput = true;
     7             process.StartInfo.CreateNoWindow = true;
     8             process.StartInfo.UseShellExecute = false;
     9             process.StartInfo.Arguments = filePathTextbox.Text;
    10             process.Start();
    11 
    12             string outPut = process.StandardOutput.ReadLine();
    13 
    14             outputTextbox.Text = outPut;
    15            
    16         }

    刚开始编写的时候,我采取的并不是将文件路径直接传入控制台程序的方法,而是将文件在窗体应用程序中读取并分段传入控制台程序中运算。控制台程序读取传入内容有两种方法,一种是作为参数传入,在程序中保存在Main函数的args参数中;另一种是采用流读入的方法传入。若在控制台中输入"*.exe arg1 arg2"的方式运行程序,以上两种方法都能够传入参数没有问题。然而,若是用另一个程序通过process的方法运行,这两种方法必须严格区分。开始我编写控制台程序用args传入参数,然后在用process的方法调用的时候发现无论如何都无法传入参数,便是没有将这两种方式区分开来。

    最后贴上窗体程序的运行结果

  • 相关阅读:
    提高ASP.NET效率的几个方面
    危险字符过滤的类
    通过HttpModule实现数据库防注入
    字符串(含有汉字)转化为16进制编码进制
    C# 中的类型转换
    防范SQL注入攻击的代码
    微软笔试小感
    Debug和Trace配置小记
    C#动态地调用Win32 DLL中导出的函数
    Debug和Trace使用小记
  • 原文地址:https://www.cnblogs.com/zany/p/4399113.html
Copyright © 2020-2023  润新知