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

如何免费做网站的教程太原工程建设信息网站

如何免费做网站的教程,太原工程建设信息网站,同一个域名可以做几个网站吗,python能做网站开发吗简介 四次挥手示意图 在四次挥手过程中#xff0c;第一次挥手中的Seq为本次挥手的ISN#xff0c; ACK为 上一次挥手的 Seq1#xff0c;即最后一次数据传输的Seq1。挥手信息由客户端首先发起。 实现步骤#xff1a; 下面是TCP四次挥手的步骤#xff1a; 第一次挥手…简介 四次挥手示意图 在四次挥手过程中第一次挥手中的Seq为本次挥手的ISN ACK为 上一次挥手的 Seq1即最后一次数据传输的Seq1。挥手信息由客户端首先发起。 实现步骤 下面是TCP四次挥手的步骤 第一次挥手FIN主动关闭方发送一个带有FINFinish标志的TCP报文段给被动关闭方表示主动关闭方已经没有数据要发送了。 第二次挥手ACK被动关闭方接收到第一次挥手的TCP报文段后发送一个带有ACKAcknowledgment和确认序号的TCP报文段作为响应表示已经收到了关闭请求。 第三次挥手FIN被动关闭方发送一个带有FIN标志的TCP报文段给主动关闭方表示被动关闭方也没有数据要发送了。 第四次挥手ACK主动关闭方接收到第三次挥手的TCP报文段后发送一个带有ACK和确认序号的TCP报文段作为响应表示已经收到了关闭请求。 在完成这四次挥手之后TCP连接就正式关闭了。需要注意的是每一次挥手都需要对方的确认才能进行下一步操作这样可以确保双方都知道连接已经关闭并且保证数据的完整性和可靠性。 这个过程可以简化为以下步骤 主动关闭方发送FIN报文段。被动关闭方接收到FIN后发送ACK报文段作为确认。被动关闭方发送FIN报文段。主动关闭方接收到FIN后发送ACK报文段作为确认。 这样TCP连接就完成了关闭过程。 修改说明 我将客户端的发送消息和服务端的接收消息做了一些简单的封装 客户端 public void sendMsg(String dataMsg, DatagramSocket datagramSocket) throws IOException {byte[] bytes dataMsg.getBytes();DatagramPacket datagramPacketMsg new DatagramPacket(bytes, 0,bytes.length, new InetSocketAddress(localhost,9999));datagramSocket.send(datagramPacketMsg);} 服务端 //接收数据public String receive(DatagramSocket datagramSocket, int time1, int time2) throws IOException {//设置超时时间datagramSocket.setSoTimeout(time1);//创建数据包用于接收数据byte[] bytes3 new byte[1024];DatagramPacket datagramPacket3 new DatagramPacket(bytes3, bytes3.length);datagramSocket.receive(datagramPacket3);//停止计时器datagramSocket.setSoTimeout(time2);String s3 new String(datagramPacket3.getData(), 0, datagramPacket3.getLength());return s3;} 第一次挥手 客户端发送关闭请求 //四次挥手关闭连接System.out.println();System.out.println(四次挥手:);System.out.println(第一次挥手: 客户端 - 服务端);System.out.println(数据发送...);connectionMarks.setFinMark(2);String finMark String.valueOf(connectionMarks.getFinMark());connectionMarks.setACKMark(1);String ACKFin String.valueOf(connectionMarks.getACKMark());String SeqFin String.valueOf(connectionMarks.getSeq());String ACKS1 String.valueOf(Integer.parseInt(SeqD1) 1);String dataF1 finMark / ACKFin SeqFin ACKS1;clientMsg.sendMsg(dataF1, datagramSocket); 服务端接收数据 //四次握手//第一次System.out.println();String receiveB1 serverMsg.receive(datagramSocket, 0, 0);System.out.println(接收到的数据段为: receiveB1);String[] s1 receiveB1.split( );String[] splitS1 s1[0].split(/);if (!(splitS1[0].equals(2)|| splitS1[1].equals(1)|| s1[2].equals(String.valueOf(Integer.parseInt(SeqD1) 1)))){throw new WrongConnectionException(非本次连接);} 第二次挥手 服务端发送第一次挥手的ACK //第二次System.out.println();System.out.println(服务端 - 客户端);System.out.println(数据发送...);String SeqB2 s1[2];String ACKB2 String.valueOf(Integer.parseInt(s1[1]) 1);connectionMarks.setACKMark(1);String ackMarkB String.valueOf(connectionMarks.getACKMark());String dataMsgB2 ackMarkB SeqB2 ACKB2;byte[] datasB2 dataMsgB2.getBytes();DatagramPacket datagramPacketB2 new DatagramPacket(datasB2, 0,datasB2.length, new InetSocketAddress(localhost,8888));//调用对象发送数据datagramSocket.send(datagramPacketB2); 客户端接收 System.out.println();System.out.println(开始接收数据段...);byte[] bytesB2 new byte[1024];DatagramPacket datagramPacketB2 new DatagramPacket(bytesB2, bytesB2.length);datagramSocket.receive(datagramPacketB2);String receiveMsgB2 new String(datagramPacketB2.getData(), 0, datagramPacketB2.getLength());System.out.println(接收到的数据段为: receiveMsgB2);第三次挥手 服务端发送请求关闭给客户端 System.out.println();System.out.println(服务端 - 客户端);System.out.println(数据发送...);String SeqB3 SeqB2;String FinMark splitS1[0];String ACKB3 ACKB2;String dataMsgB3 FinMark / ackMarkB SeqB3 ACKB3;byte[] datasB3 dataMsgB3.getBytes();DatagramPacket datagramPacketB3 new DatagramPacket(datasB3, 0,datasB3.length, new InetSocketAddress(localhost,8888));//调用对象发送数据datagramSocket.send(datagramPacketB3); 客户端接收数据需要校验如果收到为关闭请求则发送ACK给服务端 System.out.println();System.out.println(开始接收数据段...);byte[] bytesB3 new byte[1024];DatagramPacket datagramPacketB3 new DatagramPacket(bytesB3, bytesB3.length);datagramSocket.receive(datagramPacketB3);String receiveMsgB3 new String(datagramPacketB3.getData(), 0, datagramPacketB3.getLength());System.out.println(接收到的数据段为: receiveMsgB3);String[] splitB3 receiveMsgB3.split( );String[] split2 splitB3[0].split(/);if (!(split2[0].equals(2)|| split2[1].equals(1)||splitB3[1].equals(ACKS1)||splitB3[2].equals(String.valueOf(Integer.parseInt(SeqFin) 1)))){throw new WrongConnectionException(非本次连接);} 第四次挥手 客户端接收并发送第三次挥手的ACK给服务端 System.out.println();System.out.println(第四次挥手: 客户端 - 服务端);System.out.println(数据发送...);String ackMark4 ACKFin;String SeqB4 SeqFin;String ACKB4 String.valueOf(Integer.parseInt(ACKS1) 1);String dataB4 ackMark4 SeqB4 ACKB4;clientMsg.sendMsg(dataB4, datagramSocket);//关闭流datagramSocket.close(); 客户端接收到ACK并且关闭  System.out.println();String receiveB4 serverMsg.receive(datagramSocket, 0, 0);System.out.println(接收到的数据段为: receiveB4);//关闭流datagramSocket.close(); 完成总结 基本完成了UDP实现TCP但仍有欠缺。实现过程中代码的复用过高没有进行有效的方法封装。代码不够成熟还由一些不完善的地方没有实现MTU机制。对UDP和TCP有了更深入的了解。
http://www.w-s-a.com/news/389036/

相关文章:

  • 网站做区块链然后往里面投钱品牌设计公司收费标准
  • 2022互联网+创新创业项目呼和浩特企业网站排名优化
  • 电子商务类网站建设山西自助建站系统怎么用
  • odoo做网站网站设置专栏有什么好处
  • 局域网内个人网站建设查询企业的网站有哪些
  • 网站建设属于技术开发吗网页制作团队
  • 做家常菜的网站哪个好哪个网站做图片外链
  • 眼科医院网站设计怎么做6深圳宝安是什么风险等级
  • 网站制作容易吗logo免费生成网站
  • 建设厅官方网站下载专区网络托管公司
  • 祥云平台官方网站网线制作实验原理
  • 把网站做成app的软件下载国外做兼职的网站有哪些
  • 网站建设 海豚弯专业的网站开发服务商
  • 那个网站有免费模板中国家装公司十大排名
  • 中铁建设集团有限公司门户网站余杭区建设规划局网站
  • 天猫网站建设的目标是什么做网站常见问题模板
  • 做php网站需要什么软件天津建设网官方网站
  • 南漳网站开发上海网站推广方法
  • 深圳seo网站大连旅顺房价
  • dede网站 地图什么做有没有做黑市网站
  • 做网站参考文献域名如何做网站
  • 怎么选择网站开发英文网站建设用途
  • 怎样做电子商务网站织梦生成手机网站
  • 公司网站建设选什么服务器网站里怎样添加关键词
  • 深圳建设局网站深业中城绿化项目营销型网站开发流程包括
  • 找销售的网站九江市建设项目服务中心
  • 东原ARC网站建设公司合肥seo网站推广外包
  • 那个网站是做房产中介的网站制作软件小学
  • 做网页怎么建站点视频解析网站
  • 做网站的系统设计网站设计论文前言