收藏 分享(赏)

网络通信.ppt

上传人:天天快乐 文档编号:1116291 上传时间:2018-06-13 格式:PPT 页数:13 大小:159.50KB
下载 相关 举报
网络通信.ppt_第1页
第1页 / 共13页
网络通信.ppt_第2页
第2页 / 共13页
网络通信.ppt_第3页
第3页 / 共13页
网络通信.ppt_第4页
第4页 / 共13页
网络通信.ppt_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、,软帝信息科技,网络通信技术,主讲:李博,2018/6/13,DNS,DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。C#中的DNS则是一个静态类,它从Internet域名系统(DNS)检索关于特定主机的信息。提供简单的域名解析功能。,2018/6/13,IP,IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。IPv6是Internet

2、 Protocol Version 6的缩写,也被称作下一代互联网协议,它是由IETF小组(Internet工程任务组Internet Engineering Task Force)设计的用来替代现行的IPv4(现行的IP)协议的一种新的IP协议。IPv4地址用一个32位二进制的数表示一个主机号码,但资源有限。IPv6地址的128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,这些数之间用冒号(:)分开,例如:3ffe:3201:1401:1280:c8ff:fe4d:db39C#中IPAddress类包含计算机在IP网络上的地址。,2018/6/13,端口,计算机端

3、口是英文port的意译,可以认为是计算机与外界通讯交流的出口。协议端口如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:216)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(216-1)。 UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。,2018/6/13,SOCKET,Socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取

4、后一种意思。通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。C#中的Socket 类为网络通信提供了一套丰富的方法和属性。,2018/6/13,飞秋发送数据的格式,/飞秋发送数据的格式Ver:Packe

5、tNo:SenderName:SenderHost:CommandNo:AdditionalSectionmsg = string.Format(0:1:2:3:4:5, 1.5, DateTime.Now.Ticks, 李连杰, Dns.GetHostName(), 32, msg);,2018/6/13,线程,线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可

6、少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是程序本身。 线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。,2018/6/13,发送端,/获取对方的ip地址 string s = textBox2.Text; /转换成真正的ip地址 IPAddress ip = IPAddress.Parse(s); /端口号 int port = 2

7、425;/飞秋端口号 /获取发送的消息 string msg = textBox3.Text; /飞秋发送数据的格式Ver:PacketNo:SenderName:SenderHost:CommandNo:AdditionalSection msg = string.Format(0:1:2:3:4:5, 1.5, DateTime.Now.Ticks, 李连杰, Dns.GetHostName(), 32, msg); /使用socket通信技术 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,

8、ProtocolType.Udp);,2018/6/13,发送端,/AddressFamily寻址方案 /SocketType socket类型 /protocolType协议类型 /连接到对方 client.Connect(ip, port); /要以字节数组的形式发送数据 byte buffer = Encoding.Default.GetBytes(msg); /发送数据 client.Send(buffer); MessageBox.Show(发送成功); /关闭连接,释放资源 client.Close();,2018/6/13,接收端,Socket server; private v

9、oid button1_Click(object sender, EventArgs e) server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); /端口号 int port = 3000;/不能和飞秋的端口号一样 /服务器端端口号不能和已经运行了的软件的端口号重复 /指定接收哪些ip传来的数据 IPAddress ip = IPAddress.Any; /ip和端口容器 EndPoint ep = new IPEndPoint(ip, port);/EndPoint是抽象类 /绑

10、定服务 server.Bind(ep);,2018/6/13,接收端,/新建一个线程专门接受数据 Thread th = new Thread(new ThreadStart(ReceiveMsg); th.IsBackground = true;/设置为后台线程后,此线程就会随着主线程的关闭而关闭 th.Start();/启动线程 public void ReceiveMsg() byte buffer = new byte1024; /定义一个字节数组来保存接收到的数据 int readLen = 0;/每次真正接收到的数据 while (true) ,2018/6/13,接收端,/接收数

11、据 /接收是一个等待的过程 /接受消息的代码一直循环执行,判断有没有数据接收到 /但这样的话,占用了窗体线程,窗体成为一个卡死状态 if (readLen=server.Receive(buffer)0) /把接收到的字节数组转换成字符串 string msg = Encoding.Default.GetString(buffer, 0, readLen); textBox1.AppendText(接收到的消息:+msg+rn); ,2018/6/13,接收端,public Form2() InitializeComponent(); /允许跨线程访问(不做线程安全检测) Form.CheckForIllegalCrossThreadCalls = false; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报