当前位置: 首页 > news >正文

模板网站视频今天北京感染了多少人

模板网站视频,今天北京感染了多少人,app手机网站开发,北京业之峰装饰有限公司们在讲解Socket编程前#xff0c;先看几个和Socket编程紧密相关的概念#xff1a; TCP/IP层次模型当然这里我们只讨论重要的四层 01#xff0c;应用层(Application)#xff1a;应用层是个很广泛的概念#xff0c;有一些基本相同的系统级TCP/IP应用以及应用协议#xff0…们在讲解Socket编程前先看几个和Socket编程紧密相关的概念 TCP/IP层次模型当然这里我们只讨论重要的四层 01应用层(Application)应用层是个很广泛的概念有一些基本相同的系统级TCP/IP应用以及应用协议也有许多的企业应用和互联网应用。http协议在应用层运行。 02传输层(Tanspot)传输层包括UDP和TCPUDP几乎不对报文进行检查而TCP 提供传输保证。 03网络层(Netwok):网络层协议由一系列协议组成包括ICMP、IGMP、RIP、OSPF、IP(v4,v6)等。 04链路层(Link):又称为物理数据网络接口层负责报文传输。 然后我们来看下tcp层次模型图 从上图中可以看出应用程序在应用层运行在传输层在数据前加上了TCP头在 网络层加上的IP头在数据链路层加上了帧。 2端口 端口号范围:0-65535总共能表示65536个数。 按端口号可分为3大类 1公认端口WellKnownPorts从0到1023它们紧密绑定binding于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如80端口实际上总是HTTP通讯。 2注册端口RegisteredPorts从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口这些端口同样用于许多其它目的。例如许多系统处理动态端口从1024左右开始。 3动态和/或私有端口Dynamicand/orPrivatePorts从49152到65535。理论上不应为服务分配这些端口。实际上机器通常从1024起分配动态端口。 3.TCP和UDP报文 下面一起来看下TCP和UDP的报文图 从图中我们可以看出TCP和UDP中都有校验和但是在UDP报文中一般不使用校验和这样可以加快数据传输的速度但是数据的准确性可能会受到影响。换句话说Tcp协议都有校验和为了保证传输数据的准确性。 3.Socket Socket包括Ip地址和端口号两部分程序通过Socket来通信Socket相当于操作系统的一个组件。Socket作为进程之间通信机制通常也称作”套接字”用于描述IP地址和端口号是一个通信链的句柄。说白了就是两个程序通信用的。 生活案例对比 Socket之间的通信可以类比生活中打电话的案例。任何用户在通话之前首先要占有一部电话机相当于申请一个Socket同时要知道对方的号码相当于对方有一个固定的Socket然后向对方拨号呼叫相当于发出连接请求。假如对方在场并空闲拿起 电话话筒双方就可以进行通话了。双方的通话过程是一方向电话机发出信号和对方从电话机接收信号的过程相当于向socket发送数据和从socket接收数据。通话结束后一方挂起电话机相当于关闭socket撤销连接。 注意Socket不仅可以在两台电脑之间通信还可以在同一台电脑上的两个程序间通信。 4端口进阶(深入) 通过IP地址确定了网络中的一台电脑后该电脑上可能提供很多提供服务的应用每一个应用都对应一个端口。 在Internet上有很多这样的主机这些主机一般运行了多个服务软件 同时提供几种服务每种服务都打开一个Socket并绑定到一个端口上不同的端口对应于不同的服务(应用程序) 例如http 使用80端口   ftp使用21端口     smtp使用25端口 5.Socket分类 Socket主要有两种类型 流式Socket是一种面向连接的Socket针对于面向连接的TCP服务应用安全但是效率低 2数据报式Socket 是一种无连接的Socket对应于无连接的UDP服务应用不安全但效率高 6. Socket一般应用模式(服务器端和客户端) 服务器端的Socket(至少需要两个) 01.一个负责接收客户端连接请求(但不负责与客户端通信) 02.每成功接收到客户端的连接便在服务器端产生一个对应的复杂通信的Socket 021.在接收到客户端连接时创建 022. 为每个连接成功的客户端请求在服务器端都创建一个对应的Socket(负责和客户端通信) 客户端的Socket 必须指定要连接的服务器地址和端口通过创建一个Socket对象来初始化一个到服务器端的TCP连接通过上图我们可以看出首先服务器会创建一个负责监听的socket然后客户端通过socket连接到服务器指定端口最后服务器端负责监听的socket监听到客户端有连接过来了就创建一个负责和客户端通信的socket。 下面我们来看下Socket更具体的通信过程 Socket的通讯过程 服务器端 01申请一个socket 02绑定到一个IP地址和一个端口上 03开启侦听等待接收连接 客户端 01申请一个socket 02连接服务器(指明IP地址和端口号) 服务器端接收到连接请求后产生一个新的socket(端口大于1024)与客户端建立连接并进行通信原监听socket继续监听。 注意负责通信的Socket不能无限创建创建的数量和操作系统有关。 7.Socket的构造函数 Public Socket(AddressFamily addressFamily,SocketType  socketType,ProtocolType  protocolTYpe) AddressFamily指定Socket用来解析地址的寻址方案。例如InterNetWork指示当Socket使用一个IP版本4地址连接 SocketType定义要打开的Socket的类型 Socket类使用ProtocolType枚举向Windows  Sockets  API通知所请求的协议 注意 1端口号必须在 1 和 65535之间最好在1024以后。 2要连接的远程主机必须正在监听指定端口也就是说你无法随意连接远程主机。 如 IPAddress addr IPAddress.Parse(127.0.0.1); IPEndPoint endp new IPEndPoint(addr,,9000); 服务端先绑定serverWelcomeSocket.Bind(endp) 客户端再连接clientSocket.Connect(endp) 3,一个Socket一次只能连接一台主机 4,Socket关闭后无法再次使用 5,每个Socket对象只能与一台远程主机连接。如果你想连接到多台远程主机你必须创建多个Socket对象。 8.Socket常用类和方法 相关类 IPAddress包含了一个IP地址 IPEndPoint包含了一对IP地址和端口号 方法 Socket():创建一个Socket Bind():绑定一个本地的IP和端口号IPEndPoint Listen():让Socket侦听传入的连接吃那个病并指定侦听队列容量 Connect():初始化与另一个Socket的连接 Accept接收连接并返回一个新的Socket Send输出数据到Socket Receive():从Socket中读取数据 Close():关闭Socket销毁连接 接下来我们同一个简单的服务器和客户端通信的案例来看下Sokcet的具体用法效果图如下 服务器端代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace 服务器 {public partial class FServer : Form{IPAddress ip;IPEndPoint point;public FServer(){InitializeComponent();ServerListen();}private void ServerListen() {//ip地址 ip IPAddress.Parse(txtIP.Text);// IPAddress ip IPAddress.Any;//端口号point new IPEndPoint(ip, int.Parse(txtPort.Text)); //创建监听用的Socket /*AddressFamily.InterNetWork使用 IP4地址。SocketType.Stream支持可靠、双向、基于连接的字节流而不重复数据。此类型的 Socket 与单个对方主机进行通信并且在通信开始之前需要远程主机连接。Stream 使用传输控制协议 (Tcp) ProtocolType 和 InterNetworkAddressFamily。 ProtocolType.Tcp使用传输控制协议。 */ //使用IPv4地址流式socket方式tcp协议传递数据 Socket socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建好socket后必须告诉socket绑定的IP地址和端口号。 //让socket监听point try{ //socket监听哪个端口 socket.Bind(point); //同一个时间点过来60个客户端排队 socket.Listen(60); ShowMsg(服务器开始监听); Thread thread new Thread(AcceptInfo); thread.IsBackground true; thread.Start(socket); } catch (Exception ex) {ShowMsg(ex.Message); } }//记录通信用的Socket Dictionarystring, Socket dic new Dictionarystring, Socket(); // private Socket client; void AcceptInfo(object o){ Socket socket o as Socket; while (true) { //通信用socket try { //创建通信用的SocketSocket tSocket socket.Accept();string point tSocket.RemoteEndPoint.ToString();//IPEndPoint endPoint (IPEndPoint)client.RemoteEndPoint;//string me Dns.GetHostName();//得到本机名称//MessageBox.Show(me);ShowMsg(point 连接成功);ComboBoxAddItems(point);dic.Add(point, tSocket);//接收消息Thread th new Thread(ReceiveMsg);th.IsBackground true;th.Start(tSocket);}catch (Exception ex){ShowMsg(ex.Message);break; }}}//接收消息 void ReceiveMsg(object o){Socket client o as Socket;while (true){//接收客户端发送过来的数据try{//定义byte数组存放从客户端接收过来的数据byte[] buffer new byte[1024 * 1024];//将接收过来的数据放到buffer中并返回实际接受数据的长度int n client.Receive(buffer);//将字节转换成字符串string words Encoding.UTF8.GetString(buffer, 0, n);ShowMsg(client.RemoteEndPoint.ToString() words);}catch (Exception ex){if (!client.Connected) ComboBoxRoMoveItems(client.RemoteEndPoint.ToString());ShowMsg(ex.Message); break;}}}delegate void SetTextCallback(string msg);public void ShowMsg(string msg){if (this.txtLog.InvokeRequired){SetTextCallback d new SetTextCallback(ShowMsg);this.Invoke(d, new object[] { msg });}else{this.txtLog.AppendText(msg \r\n);}}delegate void SetComboBox(String msg);public void ComboBoxAddItems(string msg){if (this.cboIpPort.InvokeRequired){SetTextCallback d new SetTextCallback(ComboBoxAddItems);this.Invoke(d, new object[] { msg });}else{this.cboIpPort.Items.Add(msg);}}public void ComboBoxRoMoveItems(string msg){if (this.cboIpPort.InvokeRequired){SetTextCallback d new SetTextCallback(ComboBoxRoMoveItems);this.Invoke(d, new object[] { msg });}else{this.cboIpPort.Items.Remove(msg);cboIpPort.SelectedIndex -1;}}//给客户端发送消息private void btnSend_Click(object sender, EventArgs e){try{ string ip cboIpPort.Text;if (cboIpPort.Text.Length 5){ byte[] buffer Encoding.UTF8.GetBytes(txtMsg.Text);dic[ip].Send(buffer);ShowMsg(point.ToString() txtMsg.Text);}else{}}catch (Exception ex){ShowMsg(ex.Message);}}private void Clearbtn_Click(object sender, EventArgs e){this.txtLog.Text ;}} }客户端代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.Sockets; using System.Net; using System.Threading;namespace 客户端 {public partial class FClient : Form{Socket client;IPAddress ip;IPEndPoint point;bool isExits false;public FClient(){InitializeComponent();}private void FClient_Load(object sender, EventArgs e){ip IPAddress.Parse(txtIP.Text); point new IPEndPoint(ip, int.Parse(txtPort.Text));Thread serverConnetThread new Thread(ServerConnetThread);serverConnetThread.IsBackground true;serverConnetThread.Start();}private void ServerConnet(){try{//连接到服务器 if (client ! null) client.Close();client new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);client.Connect(point);ShowMsg(连接成功);ShowMsg(服务器: client.RemoteEndPoint.ToString());ShowMsg(客户端: client.LocalEndPoint.ToString());//连接成功后就可以接收服务器发送的信息了 Thread th new Thread(ReceiveMsg);th.IsBackground true;th.Start();}catch (Exception ex){ShowMsg(ex.Message);}}private void ServerConnetThread() {while (!isExits){if (client null || !client.Connected) {ServerConnet();}Thread.Sleep(5000);} }//接收服务器的消息void ReceiveMsg(){while (true){try {byte[] buffer new byte[1024 * 1024];int n client.Receive(buffer);string s Encoding.UTF8.GetString(buffer, 0, n);ShowMsg(point.ToString() s);}catch (Exception ex){ShowMsg(ex.Message);break;}} }delegate void SetTextCallback(string msg);public void ShowMsg(string msg){if (this.txtInfo.InvokeRequired){SetTextCallback d new SetTextCallback(ShowMsg);this.Invoke(d, new object[] { msg });}else{this.txtInfo.AppendText(msg \r\n);}}private void btnSend_Click(object sender, EventArgs e){//客户端给服务器发消息 if (client ! null) { try{ShowMsg(client.RemoteEndPoint txtMsg.Text);byte[] buffer Encoding.UTF8.GetBytes(txtMsg.Text); client.Send(buffer); } catch (Exception ex){ ShowMsg(ex.Message); } }}private void Clearbtn_Click(object sender, EventArgs e){this.txtInfo.Text ;}} }
http://www.yutouwan.com/news/106679/

相关文章:

  • pr免费模板网站网络站点推广的方法有哪些
  • 网站打开的速度慢中企动力做网站怎么样
  • 在线视频网站 一级做爰片我要自学网app免费版
  • 优秀高端网站建设公司wordpress 伪静态 效果
  • 贸易做网站济南公司
  • 济南做企业网站的公司建设学校网站的作用
  • 在线作图网站app软件开发sh365
  • 做图片视频的网站wordpress如何增加轮播
  • 璧山网站建设怎么制作网站页面
  • 长沙公司网站开发网站开发要花多少钱
  • 网站公司 模板网站策划案怎么做
  • 青岛网站建设制作网站后台上传文字图片
  • 西安网站优化公司宁波网站建设公司立找亿企邦
  • 无锡手机网站制作大学网页制作与网站建设
  • 西安市建设厅网站做影视免费网站违法吗
  • 韩国私人网站服务器网站开发推荐英文字体
  • 网站商城怎么做的遵义网上房地产查询系统
  • 厦门网站建设u低成本做网站
  • 企业app商城开发网站建设网站备案一次吗
  • 网站上传服务器教程简述软件开发流程
  • 安康北京网站建设做流程图表的网站
  • 织梦影视网站源码怎么查网站的关键词排名
  • 徐汇网站制作设计做网站策划书
  • php企业网站通讯录管理系统团购网站建设流程
  • 网站开发企业培训心得总结seo在线外链
  • 网站策划专有技术wordpress 商品模板
  • android 移动网站开发吸引人的推广标题
  • 免费学编程国内网站ui设计难学吗
  • 做品牌折扣微信推广的网站贵阳企业免费建站
  • wordpress线下安装教程视频随州抖音seo收费标准