C完整的通信代码点对点,点对多,同步,异步,UDP,TCP教学文稿.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C完整的通信代码点对点,点对多,同步,异步,UDP,TCP教学文稿.doc》由会员分享,可在线阅读,更多相关《C完整的通信代码点对点,点对多,同步,异步,UDP,TCP教学文稿.doc(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。C完整的通信代码点对点,点对多,同步,异步,UDP,TCP-C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP).txt20如果你努力去发现美好,美好会发现你;如果你努力去尊重他人,你也会获得别人尊重;如果你努力去帮助他人,你也会得到他人的帮助。生命就像一种回音,你送出什么它就送回什么,你播种什么就收获什么,你给予什么就得到什么。C#codenamespaceUDPServerclassProgramstaticvoidMain(stringargs)intrecv;bytedata=new
2、byte1024;/构建TCP服务器/得到本机IP,设置TCP端口号IPEndPointipep=newIPEndPoint(IPAddress.Any,8001);Socketnewsock=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);/绑定网络地址newsock.Bind(ipep);Console.WriteLine(ThisisaServer,hostnameis0,Dns.GetHostName();/等待客户机连接Console.WriteLine(Waitingforaclient
3、.);/得到客户机IPIPEndPointsender=newIPEndPoint(IPAddress.Any,0);EndPointRemote=(EndPoint)(sender);recv=newsock.ReceiveFrom(data,refRemote);Console.WriteLine(Messagereceivedfrom0:,Remote.ToString();Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);/客户机连接成功后,发送欢迎信息stringwelcome=Welcome!;/字符串与字节数组相互转换
4、data=Encoding.ASCII.GetBytes(welcome);/发送信息newsock.SendTo(data,data.Length,SocketFlags.None,Remote);while(true)data=newbyte1024;/发送接受信息recv=newsock.ReceiveFrom(data,refRemote);Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);newsock.SendTo(data,recv,SocketFlags.None,Remote);C#codeusingSystem;
5、usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.Net.Sockets;namespaceUDPClientclassProgramstaticvoidMain(stringargs)bytedata=newbyte1024;stringinput,stringData;/构建TCP服务器Console.WriteLine(ThisisaClient,hostnameis0,Dns.GetHostName();/设置服务IP,设置TCP端口号IPEndPo
6、intipep=newIPEndPoint(IPAddress.Parse(127.0.0.1),8001);/定义网络类型,数据连接类型和网络协议UDPSocketserver=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);stringwelcome=Hello!;data=Encoding.ASCII.GetBytes(welcome);server.SendTo(data,data.Length,SocketFlags.None,ipep);IPEndPointsender=newIPEnd
7、Point(IPAddress.Any,0);EndPointRemote=(EndPoint)sender;data=newbyte1024;intrecv=server.ReceiveFrom(data,refRemote);Console.WriteLine(Messagereceivedfrom0:,Remote.ToString();Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);while(true)input=Console.ReadLine();if(input=exit)break;server.SendTo(E
8、ncoding.ASCII.GetBytes(input),Remote);data=newbyte1024;recv=server.ReceiveFrom(data,refRemote);stringData=Encoding.ASCII.GetString(data,0,recv);Console.WriteLine(stringData);Console.WriteLine(StoppingClient.);server.Close();C#codeTCPClientTCPClient类提供了一种使用TCP协议连接到某个端点的简化方法。它还通过NetworkStream对象展现在连接过程
9、中读取或写入的数据。请参见下面从QuickStart文档中摘录的日期/时间客户机示例。使用C#编写usingSystem;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.IO;usingSystem.Text;classClientpublicstaticvoidMain(Stringargs)TCPClienttcpc=newTCPClient();Byteread=newByte32;if(args.Length!=1)Console.WriteLine(“请在命令行中指定服务器名称”);return;Stringserver=arg
10、s0;/验证服务器是否存在if(DNS.GetHostByName(server)=null)Console.WriteLine(“找不到服务器:”+服务器);return;/尝试连接到服务器if(tcpc.Connect(server,13)=-1)Console.WriteLine(“无法连接到服务器:”+服务器);return;/获取流Streams=tcpc.GetStream();/读取流并将它转换为ASCII码形式intbytes=s.Read(read,0,read.Length);StringTime=Encoding.ASCII.GetString(read);/显示数据Co
11、nsole.WriteLine(“已接收到的”+字节+“字节”);Console.WriteLine(“当前日期和时间是:”+时间);tcpc.Close();TCPListenerTCPListener类便于在来自某个客户机的TCP连接的特定套接字上进行侦听的工作。请参见下面包括在QuickStart文档中的日期/时间服务器示例。使用C#编写usingSystem;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;classServerpublicstaticvoidMain()DateTimenow;StringstrDate
12、Line;EncodingASCII=Encoding.ASCII;/在端口13进行侦听TCPListenertcpl=newTCPListener(13);tcpl.Start();Console.WriteLine(“正在等待客户进行连接”);Console.WriteLine(“请按Ctrl+c退出.”);while(true)/接收会阻塞,直到有人连接上Sockets=tcpl.Accept();/获取当前的日期和时间并将它连接成一个字符串now=DateTime.Now;strDateLine=now.ToShortDateString()+now.ToLongTimeString(
13、);/将该字符串转换成一个字节数组并发送它BytebyteDateLine=ASCII.GetBytes(strDateLine.ToCharArray();s.Send(byteDateLine,byteDateLine.Length,0);Console.WriteLine(“发送”+strDateLine);#regionDownload:FiletransferFROMftpserver/CopyafilefromFTPservertolocal/Targetfilename,ifrequired/Fullpathofthelocalfile/Targetcanbeblank(uses
14、amefilename),orjustafilename/(assumescurrentdirectory)orafullpathandfilenamepublicboolDownload(stringsourceFilename,stringlocalFilename,boolPermitOverwrite)/2.determinetargetfileFileInfofi=newFileInfo(localFilename);returnthis.Download(sourceFilename,fi,PermitOverwrite);/VersiontakinganFtpFileInfopu
15、blicboolDownload(FtpFileInfofile,stringlocalFilename,boolpermitOverwrite)returnthis.Download(file.FullName,localFilename,permitOverwrite);/AnotherversiontakingFtpFileInfoandFileInfopublicboolDownload(FtpFileInfofile,FileInfolocalFI,boolpermitOverwrite)returnthis.Download(file.FullName,localFI,permit
16、Overwrite);/Versiontakingstring/FileInfopublicboolDownload(stringsourceFilename,FileInfotargetFI,boolpermitOverwrite)/1.checktargetif(targetFI.Exists&!(permitOverwrite)throw(newApplicationException(Targetfilealreadyexists);/2.checksourcestringtarget;if(sourceFilename.Trim()=)throw(newApplicationExce
17、ption(Filenotspecified);elseif(sourceFilename.Contains(/)/treatasafullpathtarget=AdjustDir(sourceFilename);else/treatasfilenameonly,usecurrentdirectorytarget=CurrentDirectory+sourceFilename;stringURI=Hostname+target;/3.performcopySystem.Net.FtpWebRequestftp=GetRequest(URI);/Setrequesttodownloadafile
18、inbinarymodeftp.Method=System.Net.WebRequestMethods.Ftp.DownloadFile;ftp.UseBinary=true;/openrequestandgetresponsestreamusing(FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse()using(StreamresponseStream=response.GetResponseStream()/looptoread&writetofileusing(FileStreamfs=targetFI.OpenWrite()t
19、rybytebuffer=newbyte2048;intread=0;doread=responseStream.Read(buffer,0,buffer.Length);fs.Write(buffer,0,read);while(!(read=0);responseStream.Close();fs.Flush();fs.Close();catch(Exception)/catcherroranddeletefileonlypartiallydownloadedfs.Close();/deletetargetfileasitsincompletetargetFI.Delete();throw
20、;responseStream.Close();response.Close();returntrue;#endregion简单的UDP收发.发送C#codetrySockets=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);/向此网段发广播包intUDPListenerPort=8082;IPAddressbroadcast=IPAddress.Parse(192.168.0.255);/此处根据IP及子网掩码改为相应的广播IPstringts=ThisisUPDstringforsending
21、;bytesendbuf=Encoding.ASCII.GetBytes(ts);IPEndPointep=newIPEndPoint(broadcast,UDPListenerPort);s.SendTo(sendbuf,ep);catch(Exceptione)接收C#codeUdpClientlistener;intUDPListenerPort=8082;IPEndPointgroupEP=newIPEndPoint(IPAddress.Any,UDPListenerPort);trywhile(true)bytebytes=listener.Receive(refgroupEP);s
22、tringRecIP=groupEP.ToString().Substring(0,groupEP.ToString().IndexOf(:);/收到发送UPD端的IPstringRecStr=Encoding.ASCII.GetString(bytes,0,bytes.Length);/收到的UPD字符串catchC#codeTCPClientTCPClient类提供了一种使用TCP协议连接到某个端点的简化方法。它还通过NetworkStream对象展现在连接过程中读取或写入的数据。请参见下面从QuickStart文档中摘录的日期/时间客户机示例。使用C#编写usingSystem;usin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 通信 代码 点对点 同步 异步 UDP TCP 教学 文稿
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内