正在阅读:由C++转向C#需要注意的变化(四)由C++转向C#需要注意的变化(四)

2004-11-18 15:52 出处:CSDN 作者:AustinLei 责任编辑:linjixiong

  引言:每隔10年左右,编程人员就需要花费大量的时间和精力去学习新的编程技术。在80年代是Unix和C,90年代是Windows和C++,现在又轮到了微软的.NETFramework和C#。尽管需要学习新的技术,但由此带来的好处却远高于付出的劳动。幸运的是,使用C#和.NET进行的大多数工程的分析和设计与在C++和Windows中没有本质的变化。在本篇文章中,我将介绍如何实现由C++到C#的飞跃。

  已经有许多文章介绍过C#对C++的改进,在这里我就不再重复这些问题了。在这里,我将重点讨论由C++转向C#时最大的变化:由不可管理的环境向可管理的环境的变化。此外,我还会提出一些C#编程人员容易犯的错误供大家参考,此外,还将说明一些C#语言的能够影响编程的新功能。

  系列文章:[由C++转向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);

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闂囧鏌ㄥ┑鍡欏妞ゅ繒濮风槐鎺楀焵椤掍胶绡€闁稿本顨嗛弬鈧梻浣虹帛钃辩憸鏉垮暣閸┾偓妞ゆ巻鍋撴い鏇ㄥ幘濡叉劙骞橀幇浣瑰兊闁哄鐗勯崝宀勫几閹达附鈷戦柛婵嗗閺嗘瑩鏌eΔ鈧€氫即宕洪埀顒併亜閹达絾纭剁紒鎰⒒閳ь剚顔栭崰鏇犲垝濞嗘挶鈧礁顫滈埀顒勫箖濞嗘挻鍤戦柛銊︾☉娴滈箖鏌涢…鎴濇灀闁衡偓娴犲鐓ユ繛鎴灻鈺伱归悩娆忔噽绾惧吋銇勯弴鐐村櫣闁诲骏濡囬埀顒侇問閸n噣宕戞繝鍥х畺闁冲搫鍟扮壕鍏间繆椤栫偞鏁遍悗姘偢濮婂宕掑▎鎴g獥闂佺ǹ顑呭Λ婵嗙暦閹存績妲堥柕蹇娾偓铏吅婵$偑鍊栭悧妤冪矙閹烘垟鏋嶉柣妯肩帛閻撴瑧绱撴担闈涚仼闁哄鍠栭弻锝夊箻鐎靛憡鍣梺闈涙搐鐎氭澘顕i鈧崺鈧い鎺戝閺佸嫭绻涢崱妤冪畼缂傚倹宀搁弻鐔煎箥椤旂⒈鏆梺缁樻尰閻熝囧焵椤掑倹鍤€閻庢凹鍠楅弲璺何旈崨顓炴優闂佹悶鍎弬渚€宕戦幘鑸靛枂闁告洦鍓涢敍姗€姊洪崨濠冪叆缂佸鐖奸獮鎴﹀閻橆偅鏂€闁诲函缍嗘禍鐐烘晬濠婂啠鏀介柣鎰级椤ョ偤鏌涢弮鈧悧鐘诲春閵忋倕鍗抽柣鏃囨閻﹀牓姊哄Ч鍥х伈婵炰匠鍐╂瘎濠碉紕鍋戦崐褏绱為埀顒佷繆椤愩垹顏╃€规挸瀚板娲川婵犲嫧濮囧┑鐐插悑閻熝勭珶閺囩喓绡€婵﹩鍘鹃崢鐢告⒑绾拋娼愰柛鏃撶畵瀹曢潧鈻庨幋鐘碉紲闂佺粯鐟㈤崑鎾绘煕閵娿儳鍩g€殿喖顭锋俊鎼佸煛閸屾矮绨介梻浣呵归張顒傜矙閹达富鏁傞柨鐕傛嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻锝夊箣閿濆憛鎾绘煕婵犲倹鍋ラ柡灞诲姂瀵挳鎮欏ù瀣壕闁告縿鍎虫稉宥夋煛瀹ュ骸骞楅柣鎾存礃閵囧嫰骞囬崜浣荷戠紓浣插亾闁逞屽墰缁辨帡鎮欓鈧崝銈嗙箾绾绡€鐎殿喖顭烽幃銏ゆ偂鎼达絿鏆伴梻浣虹帛椤ㄥ懘鎮у⿰鍏炬盯宕熼鐘碉紲闂佽鍨庨崘锝嗗瘱缂傚倷绶¢崳顕€宕归幎钘夌闁靛繒濮Σ鍫ユ煏韫囨洖啸妞ゆ挸鎼埞鎴︽倷閸欏妫炵紓浣虹帛鐢绮嬮幒鎾堕檮闁告稑艌閹锋椽姊洪崨濠勭畵閻庢凹鍓熼、鏃堝Ψ閳哄倻鍘遍柟鑹版彧缁查箖寮抽渚囨闁绘劖褰冮弳娆愩亜椤愶絿鐭掗柛鈹惧亾濡炪倖甯掔€氼剛绮婚弽銊х闁糕剝蓱鐏忣厾绱掗悪娆忔处閻撴洘銇勯鐔风仴闁哄鍊楅幉鎼佹偋閸繄浠撮梺瀹狀潐閸ㄥ潡骞冨▎鎾村殤妞ゆ帊鐒﹂崰鏍磽閸屾瑧璐伴柛鐘崇墱缁棃宕奸弴鐐殿槴闂佸湱鍎ら〃鍛不婵犳碍鍋i柛銉簻閽勫ジ鏌熼懞銉︾闁宠鍨块幃娆撳级閹寸姳鎴烽梻浣虹《閺呮稓鈧碍婢橀锝夘敃閿曗偓缁€鍐┿亜閺冨倹娅曢柛娆忔閳规垿鎮╃紒妯婚敪濠碘槅鍋呴悷鈺勬"闂佺粯岣块崑銊︾濠婂牊鐓ラ柡鍌涘閹牓鏌涢弮鎾绘闁逛究鍔嶇换婵嬪礃閳瑰じ铏庨柣搴ゎ潐濞插繘宕濆鍥ㄥ床婵犻潧顑呯粈鍐煟閹伴潧澧绘俊顐g箞濮婂宕掑▎鎺戝帯闂佺娅曢幑鍥х暦閻㈢ǹ鍐€妞ゆ挾鍋熼鍡涙⒑鐠恒劌娅愰柟鍑ゆ嫹