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

网站建设年份查询免费自助建站网站

网站建设年份查询,免费自助建站网站,asp做的网站缺点,做宝玉石交易的网站有哪些简介UDP(User Datagram Protocol)用户数据报协议,TCP(Transmission Control Protocol) 传输控制协议,是传输层的两个重要协议。UDP是一种无连接、不可靠传输的协议。其将数据源IP、目的地IP和端口封装成数据包,不需要建立连接,每个…

简介

UDP(User Datagram Protocol)用户数据报协议,TCP(Transmission Control Protocol) 传输控制协议,是传输层的两个重要协议。

UDP是一种无连接、不可靠传输的协议。其将数据源IP、目的地IP和端口封装成数据包,不需要建立连接,每个数据包的大小限制在64KB内;发送不管对方是否准备好,接收方收到也不确认,故是不可靠的;可以广播发送,发送数据结束时无需释放资源,开销小,速度快。UDP协议适合于即时通信场景,丢失少量数据包也不影响,例如语音通话、视频等。

TCP协议的使用必须双方先建立连接,即是一种面向连接的可靠通信协议。传输前,采用“三次握手”方式建立连接。在连接中可进行大数据量的传输 。连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。TCP协议适用于对信息安全要求较高的场景,例如文件下载等需要安全的数据通信。

Internet协议(IP)

Internet协议类 — InetAddress ,主要包括以下API:

public static InetAddress getLocalHost()

返回本主机的地址对象

public static InetAddress getByName(String host)

得到指定主机的IP地址对象,参数是域名或者IP地址

public String getHostName()

获取此IP地址的主机名

public String getHostAddress()

返回IP地址字符串

public boolean isReachable(int timeout)

判断是否可在指定毫秒内连通该IP地址对应的主机

        //本机ipInetAddress ip1=InetAddress.getLocalHost();System.out.println(ip1.getHostName());System.out.println(ip1.getHostAddress());//域名IPInetAddress ip2=InetAddress.getByName("www.baidu.com");System.out.println(ip2.getHostAddress());InetAddress ip3=InetAddress.getByName("112.80.248.75");System.out.println(ip3.getHostAddress());//判断是否可以连通 pingSystem.out.println(ip3.isReachable(5000));

使用UDP通信

假定从客户端(clientP)给服务端(serverP)发消息,我们先实现客户端发消息功能。

  1. 首先创建DatagramSocket对象socket,作为发送端UDP对象不需要定义端口号,使用随机分配的就可以了。

  1. 然后使用DatagramPacket:数据包对象,将我们的数据内容进行包装,在这里需要设置好接收端口号。

  1. 最后使用send方法把数据包发出去。

  1. 释放通信资源

        DatagramSocket socket=new DatagramSocket();System.out.println("本机端口:"+socket.getLocalPort());//发送端端口号for (int i = 0; i < 5; i++) {//内容byte[] buff = ("你好 "+i).getBytes();DatagramPacket packet = new DatagramPacket(buff, buff.length,InetAddress.getLocalHost(), 8888);//接收端口//发送socket.send(packet);}socket.close();

再来实现服务端接收功能。

  1. 首先也是创建DatagramSocket对象socket,作为接收端UDP对象就需要定义端口号了,与服务端一致。

  1. 然后使用DatagramPacket,数据包对象,来存放我们需要接收的内容数据包。

  1. 最后使用receive方法把数据包收回来。

        DatagramSocket socket=new DatagramSocket(8888);for (int i = 0; i < 5; i++) {//内容byte[] buff = new byte[1024 * 10];DatagramPacket packet = new DatagramPacket(buff, buff.length);//接收socket.receive(packet);//数据int len = packet.getLength();//获取收到内容的长度String rs = new String(buff, 0, len);System.out.println("收到 " +packet.getSocketAddress().toString()+":"+ rs);}socket.close();

以上就实现了客户端往服务端发送消息。这个实现的还只是单方面通信,那我们如何实现互相通信呢。

实现CS互通信

基于前面内容我们知道如何实现一方给另一方发消息,这里我们加一个线程进行反过来操作就实现了一个简单的互相通信。

  1. 服务端

我们设置一个线程来进行数据接收打印,在主线程进行数据发送,再根据关键字识别进行通信中断功能。

public class serverP {public static void main(String[] args) throws Exception {System.out.println("服务端+++");Thread t=new myThread();//服务端接收线程t.start();//发送 对象DatagramSocket socketp =new DatagramSocket();Scanner sc=new Scanner(System.in);while(true) {//内容String msg=sc.nextLine();byte[] buff = msg.getBytes();DatagramPacket packet = new DatagramPacket(buff, buff.length,InetAddress.getLocalHost(), 8888);//接收socketp.send(packet);if("再见".equals(msg)) {socketp.close();System.out.println("断开连接~");break;}}}
}/*** 接收线程*/
class myThread extends Thread{@Overridepublic void run() {//对象DatagramSocket socket= null;try {socket = new DatagramSocket(8889);} catch (SocketException e) {e.printStackTrace();}while (true) {//内容byte[] buff = new byte[1024 * 10];DatagramPacket packet = new DatagramPacket(buff, buff.length);//接收try {socket.receive(packet);} catch (IOException e) {e.printStackTrace();}//数据int len = packet.getLength();//获取收到内容的长度String rs = new String(buff, 0, len);System.out.println("收到 " +packet.getSocketAddress().toString()+":"+ rs);if("再见".equals(rs)) {socket.close();break;}}}
}
  1. 客户端,类似的有:

public class clientP {public static void main(String[] args) throws Exception {System.out.println("客户端+++");Thread t=new myThreadC();//服务端接收线程t.start();//发送 对象DatagramSocket socket=new DatagramSocket();Scanner sc=new Scanner(System.in);while(true) {//内容String msg=sc.nextLine();byte[] buff = msg.getBytes();DatagramPacket packet = new DatagramPacket(buff, buff.length,InetAddress.getLocalHost(), 8889);//接收socket.send(packet);if("再见".equals(msg)) {socket.close();System.out.println("断开连接~");break;}}}
}/*** 接收线程*/
class myThreadC extends Thread{@Overridepublic void run() {//对象DatagramSocket socket= null;try {socket = new DatagramSocket(8888);} catch (SocketException e) {e.printStackTrace();}while (true) {//内容byte[] buff = new byte[1024 * 10];DatagramPacket packet =  new DatagramPacket(buff, buff.length);//接收try {socket.receive(packet);} catch (IOException e) {e.printStackTrace();}//数据int len = packet.getLength();//获取收到内容的长度String rs = new String(buff, 0, len);System.out.println("收到 " +packet.getSocketAddress().toString()+":"+ rs);if("再见".equals(rs)) {socket.close();break;}}}
}
  1. 至此我们实现了UDP互相发消息

TCP通信

java中只要是使用java.net.Socket类实现通信,底层即是使用了TCP协议。

public Socket(String host , int port)​,创建发送端的Socket对象与服务端连接,参数为服务端程序的ip和端口。

方法:getOutputStream、getInputStream,分别是获得字节输出、输入流对象。

public ServerSocket(int port),注册服务端端口。

方法:accept,等待接收客户端的Socket通信连接,连接成功返回Socket对象与客户端建立端到端通信

具体来说,客户端发送实现:

  1. 创建客户端的Socket对象,请求与服务端的连接。

  1. 使用socket对象调用getOutputStream()方法得到字节输出流。

  1. 使用字节输出流完成数据的发送,发送一行内容就要flush。

  1. 释放资源:关闭socket管道。

            Socket socket=new Socket("127.0.0.1",6666);OutputStream os= socket.getOutputStream();PrintStream ps=new PrintStream(os);while(true) {ps.println("hello~");ps.flush();}

服务端接收:

  1. 创建ServerSocket对象,注册服务端端口。

  1. 调用ServerSocket对象的accept()方法,等待客户端的连接,并得到Socket管道对象。

  1. 通过Socket对象调用getInputStream()方法得到字节输入流、完成数据的接收。

  1. 释放资源:关闭socket管道

            ServerSocket serverSocket=new ServerSocket(6666);            Socket socket=serverSocket.accept();           InputStream is=socket.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(is));String msg;while((msg=br.readLine())!=null){System.out.println(socket.getRemoteSocketAddress()+" "+msg);}

先运行服务端,然后打开客户发送端,成果发送。


文章转载自:
http://colugo.c7496.cn
http://coelentera.c7496.cn
http://monoatomic.c7496.cn
http://isotac.c7496.cn
http://bedridden.c7496.cn
http://predikant.c7496.cn
http://hiding.c7496.cn
http://nonnasally.c7496.cn
http://vinum.c7496.cn
http://isp.c7496.cn
http://hoodwink.c7496.cn
http://tuvaluan.c7496.cn
http://northwardly.c7496.cn
http://ethereal.c7496.cn
http://efflux.c7496.cn
http://bacon.c7496.cn
http://pigmentation.c7496.cn
http://inhabit.c7496.cn
http://grasshopper.c7496.cn
http://fishy.c7496.cn
http://chaldaean.c7496.cn
http://geologician.c7496.cn
http://bason.c7496.cn
http://ekka.c7496.cn
http://reaggregate.c7496.cn
http://skopje.c7496.cn
http://confiture.c7496.cn
http://diamagnetism.c7496.cn
http://cokehead.c7496.cn
http://anagogic.c7496.cn
http://inch.c7496.cn
http://corrosively.c7496.cn
http://fragmental.c7496.cn
http://adrenalize.c7496.cn
http://lagoon.c7496.cn
http://cellule.c7496.cn
http://chichi.c7496.cn
http://achaian.c7496.cn
http://senescence.c7496.cn
http://butanone.c7496.cn
http://carafe.c7496.cn
http://sadhu.c7496.cn
http://toefl.c7496.cn
http://linnet.c7496.cn
http://immunohistology.c7496.cn
http://painstaking.c7496.cn
http://conglomeratic.c7496.cn
http://enteral.c7496.cn
http://recapitalization.c7496.cn
http://reproachingly.c7496.cn
http://leafstalk.c7496.cn
http://sealant.c7496.cn
http://cetin.c7496.cn
http://rubicund.c7496.cn
http://favela.c7496.cn
http://defile.c7496.cn
http://struvite.c7496.cn
http://almirah.c7496.cn
http://cran.c7496.cn
http://jointworm.c7496.cn
http://kakotopia.c7496.cn
http://erberry.c7496.cn
http://chuppah.c7496.cn
http://miracidium.c7496.cn
http://infest.c7496.cn
http://roland.c7496.cn
http://bemuddle.c7496.cn
http://nacrite.c7496.cn
http://deodorise.c7496.cn
http://steelyard.c7496.cn
http://haricot.c7496.cn
http://airy.c7496.cn
http://crocked.c7496.cn
http://milord.c7496.cn
http://centering.c7496.cn
http://wbc.c7496.cn
http://links.c7496.cn
http://nulliparous.c7496.cn
http://discutient.c7496.cn
http://sarcomagenic.c7496.cn
http://lepidopter.c7496.cn
http://zionite.c7496.cn
http://xylyl.c7496.cn
http://dispassion.c7496.cn
http://geodesy.c7496.cn
http://cookery.c7496.cn
http://ghazze.c7496.cn
http://sequentially.c7496.cn
http://pecuniosity.c7496.cn
http://supercontinent.c7496.cn
http://colugo.c7496.cn
http://squib.c7496.cn
http://suggest.c7496.cn
http://enrage.c7496.cn
http://hypersexual.c7496.cn
http://fluorocarbon.c7496.cn
http://assessable.c7496.cn
http://femineity.c7496.cn
http://babbitt.c7496.cn
http://preoccupant.c7496.cn
http://www.zhongyajixie.com/news/74275.html

相关文章:

  • 网站域名价值查询品牌推广软文200字
  • 泰安网站搭建公司关键词排名优化技巧
  • 垂直b2c网站有哪些青海百度关键词seo
  • 北京网站制作17页十大暗网搜索引擎
  • 沂南网站建设怎样在网上做推广
  • 用wordpress搭建完整网站教程视频云客网平台
  • 微信开发网站开发搜外网
  • 太原商城网站建设成都百度网站排名优化
  • 东营企业网站建设如何做网页链接
  • 郴州网站建设ku0735昆明关键词优化
  • 武安企业做网站推广百度风云榜小说排行榜历届榜单
  • 海北州公司网站建设上海关键词优化推荐
  • 郑州网站制作企业关键词优化策略有哪些
  • 网站建设 策划seo的研究对象
  • 自己如何建设网站广告投放是什么工作
  • 旅游网站规划设计微指数查询
  • 专营网站建设百度线上推广
  • 高端网站设计公司有首页关键词排名
  • 网站做404是什么意思郑州网站优化顾问
  • .课程网站建设与应用云搜索下载
  • 网站域名注册要多少钱竞价什么意思
  • jsp动态网站开发基础教程与实验指导厦门网站流量优化价格
  • 黄山旅游攻略三日游自由行郑州seo关键词排名优化
  • 淘宝客网站做app深圳全网推广排名
  • 灰色网站怎么做搜索到的相关信息
  • 建设什么企业网站seo最新
  • 手机ps软件如何做ppt下载网站李江seo
  • 武汉资讯网优化百度涨
  • 网站开发交接协议书免费引流推广
  • 傻瓜式网站建设河北seo平台