ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:32.07KB ,
资源ID:6675516      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6675516.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#完整的通信代码点对点点对多同步异步UDPTCP.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#完整的通信代码点对点点对多同步异步UDPTCP.docx

1、C#完整的通信代码点对点点对多同步异步UDPTCPC# code namespace UDPServer class Program static void Main(string args) int recv; byte data = new byte1024; /构建TCP 服务器 /得到本机IP,设置TCP端口号 IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001); Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram , Protocol

2、Type.Udp); /绑定网络地址 newsock.Bind(ipep); Console.WriteLine(This is a Server, host name is 0,Dns.GetHostName(); /等待客户机连接 Console.WriteLine(Waiting for a client.); /得到客户机IP IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)(sender); recv = newsock.ReceiveFrom(data, ref Re

3、mote); Console .WriteLine (Message received from 0: , Remote.ToString (); Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv ); /客户机连接成功后,发送欢迎信息 string welcome = Welcome ! ; /字符串与字节数组相互转换 data = Encoding .ASCII .GetBytes (welcome ); /发送信息 newsock .SendTo (data ,data.Length ,SocketFlags .No

4、ne ,Remote ); while (true ) data =new byte 1024; /发送接受信息 recv =newsock.ReceiveFrom(data ,ref Remote); Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv); newsock .SendTo (data ,recv ,SocketFlags .None ,Remote ); C# codeusing System;using System.Collections.Generic;using System.Linq;using

5、System.Text;using System.Net;using System.Net.Sockets;namespace UDPClient class Program static void Main(string args) byte data = new byte1024; string input ,stringData; /构建TCP 服务器 Console.WriteLine(This is a Client, host name is 0, Dns.GetHostName(); /设置服务IP,设置TCP端口号 IPEndPoint ipep = new IPEndPoin

6、t(IPAddress .Parse (127.0.0.1) , 8001); /定义网络类型,数据连接类型和网络协议UDP Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); string welcome = Hello! ; data = Encoding.ASCII.GetBytes(welcome); server.SendTo(data, data.Length, SocketFlags.None, ipep); IPEndPoint sender =

7、new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)sender; data = new byte1024; int recv = server.ReceiveFrom(data, ref Remote); Console.WriteLine(Message received from 0: , Remote.ToString(); Console.WriteLine(Encoding .ASCII .GetString (data,0,recv); while (true) input = Console .ReadLi

8、ne (); if (input =exit) break ; server .SendTo (Encoding .ASCII .GetBytes (input ),Remote ); data = new byte 1024; recv = server.ReceiveFrom(data, ref Remote); stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); Console .WriteLine (Stopping Client.); server .Close ()

9、; C# codeTCPClientTCPClient 类提供了一种使用 TCP 协议连接到某个端点的简化方法。它还通过 NetworkStream 对象展现在连接过程中读取或写入的数据。请参见下面从 QuickStart 文档中摘录的日期/时间客户机示例。使用 C# 编写using System;using System.Net;using System.Net.Sockets;using System.IO;using System.Text;class Clientpublic static void Main(String args)TCPClient tcpc = new TCPCl

10、ient();Byte read = new Byte32;if (args.Length != 1)Console.WriteLine(“请在命令行中指定服务器名称”);return;String server = args0;/ 验证服务器是否存在if (DNS.GetHostByName(server) = null)Console.WriteLine(“找不到服务器:” + 服务器);return;/ 尝试连接到服务器if (tcpc.Connect(server, 13) = -1)Console.WriteLine(“无法连接到服务器:” + 服务器);return;/ 获取流St

11、ream s = tcpc.GetStream();/ 读取流并将它转换为 ASCII 码形式int bytes = s.Read(read, 0, read.Length);String Time = Encoding.ASCII.GetString(read);/ 显示数据Console.WriteLine(“已接收到的” + 字节 + “字节”);Console.WriteLine(“当前日期和时间是:” + 时间);tcpc.Close();TCPListenerTCPListener 类便于在来自某个客户机的 TCP 连接的特定套接字上进行侦听的工作。请参见下面包括在 QuickSt

12、art 文档中的日期/时间服务器示例。使用 C# 编写using System;using System.Net;using System.Net.Sockets;using System.Text;class Serverpublic static void Main()DateTime now;String strDateLine;Encoding ASCII = Encoding.ASCII;/ 在端口 13 进行侦听TCPListener tcpl = new TCPListener(13);tcpl.Start();Console.WriteLine(“正在等待客户进行连接”);Co

13、nsole.WriteLine(“请按 Ctrl+c 退出.”);while (true)/ 接收会阻塞,直到有人连接上Socket s = tcpl.Accept();/ 获取当前的日期和时间并将它连接成一个字符串now = DateTime.Now;strDateLine = now.ToShortDateString() + +now.ToLongTimeString();/ 将该字符串转换成一个字节数组并发送它Byte byteDateLine =ASCII.GetBytes(strDateLine.ToCharArray();s.Send(byteDateLine, byteDate

14、Line.Length, 0);Console.WriteLine(“发送” + strDateLine); #region Download: File transfer FROM ftp server / / Copy a file from FTP server to local / / Target filename, if required / Full path of the local file / / Target can be blank (use same filename), or just a filename / (assumes current directory)

15、 or a full path and filename public bool Download(string sourceFilename, string localFilename, bool PermitOverwrite) /2. determine target file FileInfo fi = new FileInfo(localFilename); return this.Download(sourceFilename, fi, PermitOverwrite); /Version taking an FtpFileInfo public bool Download(Ftp

16、FileInfo file, string localFilename, bool permitOverwrite) return this.Download(file.FullName, localFilename, permitOverwrite); /Another version taking FtpFileInfo and FileInfo public bool Download(FtpFileInfo file, FileInfo localFI, bool permitOverwrite) return this.Download(file.FullName, localFI,

17、 permitOverwrite); /Version taking string/FileInfo public bool Download(string sourceFilename, FileInfo targetFI, bool permitOverwrite) /1. check target if (targetFI.Exists & !(permitOverwrite) throw (new ApplicationException(Target file already exists); /2. check source string target; if (sourceFil

18、ename.Trim() = ) throw (new ApplicationException(File not specified); else if (sourceFilename.Contains(/) /treat as a full path target = AdjustDir(sourceFilename); else /treat as filename only, use current directory target = CurrentDirectory + sourceFilename; string URI = Hostname + target; /3. perf

19、orm copy System.Net.FtpWebRequest ftp = GetRequest(URI); /Set request to download a file in binary mode ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; ftp.UseBinary = true; /open request and get response stream using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse() using (St

20、ream responseStream = response.GetResponseStream() /loop to read & write to file using (FileStream fs = targetFI.OpenWrite() try byte buffer = new byte2048; int read = 0; do read = responseStream.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, read); while (!(read = 0); responseStream.Close(); f

21、s.Flush(); fs.Close(); catch (Exception) /catch error and delete file only partially downloaded fs.Close(); /delete target file as its incomplete targetFI.Delete(); throw; responseStream.Close(); response.Close(); return true; #endregion 简单的UDP收发. 发送 C# code try Socket s = new Socket(AddressFamily.I

22、nterNetwork, SocketType.Dgram, ProtocolType.Udp); /向此网段发广播包 int UDPListenerPort = 8082; IPAddress broadcast = IPAddress.Parse(192.168.0.255); /此处根据IP及子网掩码改为相应的广播IP string ts = This is UPD string for sending; byte sendbuf = Encoding.ASCII.GetBytes(ts); IPEndPoint ep = new IPEndPoint(broadcast, UDPLis

23、tenerPort); s.SendTo(sendbuf, ep); catch (Exception e) 接收 C# code UdpClient listener; int UDPListenerPort = 8082; IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, UDPListenerPort); try while (true) byte bytes = listener.Receive(ref groupEP); string RecIP = groupEP.ToString().Substring(0, groupEP.T

24、oString().IndexOf(:); /收到发送UPD端的IP string RecStr = Encoding.ASCII.GetString(bytes, 0, bytes.Length); /收到的UPD字符串 catch C# code TCPClient TCPClient 类提供了一种使用 TCP 协议连接到某个端点的简化方法。它还通过 NetworkStream 对象展现在连接过程中读取或写入的数据。请参见下面从 QuickStart 文档中摘录的日期/时间客户机示例。 使用 C# 编写 using System; using System.Net; using Syste

25、m.Net.Sockets; using System.IO; using System.Text; class Client public static void Main(String args) TCPClient tcpc = new T 来一个Remoting的: C# codeusing System; namespace Remotable public class RemotableType : MarshalByRefObject private string _internalString = This is the RemotableType.; public strin

26、g StringMethod() return _internalString; using System; using System.Runtime.Remoting; namespace RemotingFirst public class Listener public static void Main() RemotingConfiguration.Configure(Listener.exe.config); Console.WriteLine(Listening for requests. Press Enter to exit); Console.ReadLine(); usin

27、g System; using System.Runtime.Remoting; namespace Client public class Client public static void Main() RemotingConfiguration.Configure(Client.exe.config); Remotable.RemotableType remoteObject = new Remotable.RemotableType(); Console.WriteLine(remoteObject.StringMethod(); Listener.exe.config 实只要用到Socket联接,基本上就得使用Thread,是交叉使用的。 C#封装的Socket用法基本上不算很复杂,只是不知道托管之后的Socket有没有其他性能或者安全上的问题。 在C#里面能找到的最底层的操作也就是socket了,概念不做解释。 程序模型如下: WinForm程序 : 启动端口侦听;监视Socket联接情况;定期关闭不活动的联接; Listen

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1