首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

由C++转向C#需要注意的变化(4)(1)

2009-03-06 
C++

    在网络上读取文件
  在C++中,在网络上读取文件需要有相当的编程技巧,.NET对此提供了广泛的支持。事实上,在网络上读取文件仅仅是基础类库中Stream类的另一种应用。
  首先,为了对TCP/IP端口(在本例中是65000)进行监听,我们需要创建一个TCPListener类的实例。
  TCPListenertcpListener=newTCPListener(65000);
  一旦创建后,就让它开始进行监听。
  tcpListener.Start();
  现在就要等待客户连接的要求了。
  SocketsocketForClient=tcpListener.Accept();
  TCPListener对象的Accept方法返回一个Socket对象,Accept是一个同步的方法,除非接收到一个连接请求它才会返回。如果连接成功,就可以开始向客户发送文件了。
  if(socketForClient.Connected)
  {
  ??? 
  接下来,我们需要创建一个NetworkStream类,将报路传递给constructor:
  NetworkStreamnetworkStream=newNetworkStream(socketForClient);
  然后创建一个StreamWriter对象,只是这次不是在文件上而是在刚才创建的NetworkStream类上创建该对象:
  System.IO.StreamWriterstreamWriter=
  newSystem.IO.StreamWriter(networkStream);
  当向该流写内容时,流就通过网络被传输给客户端。
  客户端的创建
  客户端软件就是一个TCPClient类的具体例子,TCPClient类代表连向主机的一个TCP/IP连接。
  TCPClientsocketForServer;
  socketForServer=newTCPClient("localHost",65000);
  有了TCPClient对象后,我们就可以创建NetworkStream对象了,然后在其上创建StreamReader类:
  NetworkStreamnetworkStream=socketForServer.GetStream();
  System.IO.StreamReaderstreamReader=
  newSystem.IO.StreamReader(networkStream);
  现在,只要其中有数据就读取该流,并将结果输出到控制台上。
  do
  {
  outputString=streamReader.ReadLine();
  if(outputString!=null)
  {
  Console.WriteLine(outputString);
  }
  }
  while(outputString!=null);
  为了对这一段代码进行测试,可以创建如下一个测试用的文件:
  Thisislineone
  Thisislinetwo
  Thisislinethree
  Thisislinefour
  这是来自服务器的输出:
  Output(Server)
  Clientconnected
  SendingThisislineone
  SendingThisislinetwo
  SendingThisislinethree
  SendingThisislinefour
  Disconnectingfromclient...
  Exiting...

热点排行