java网络编程(TCP UDP)
2018-03-07 08:55
531 查看
一 概述
1.网络编程:实现不同设备间的信息交互2.网络通信三要素
IP地址:网络中设备的唯一表示
端口号: 一台设备中标识不同的进程 (有效端口0~65535,系统使用0~1024)
传输协议:常用TCP,UDP协议
UDP: 数据包,无连接,不可靠,效率高
TCP:有连接(三次握手),可靠,可进行大量数据传输,效率低
三次握手图解: ![这里写图片描述](https://img-blog.csdn.net
二 实例
核心对象InetAddresspackage com.blueSky; import java.net.InetAddress; public class SocketTest { public static void main(String[] args) throws Exception { InetAddress address = InetAddress.getByName("lenovo-PC"); //通过静态方法获得IntAddress对象 System.out.println(address); String hostName = address.getHostName(); //获得主机名 String hostAddress = address.getHostAddress(); //获得Ip地址 System.out.println(hostName); System.out.println(hostAddress); } }
一 UDP编程
发送端
代码逻辑1.创建发送端Socket
2.获得要发送的数据
3.打包数据
4.发送数据
5.释放资源
package com.blueSky; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSender { public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(7777); //创建DatagramSocket对象(设置发送端端口为7777) //2.获得数据 String message = "UDP编程"; //处理数据 byte[] msgBytes = message.getBytes(); int length = msgBytes.length; InetAddress address = InetAddress.getByName("lenovo-PC"); int port = 8888; //接收端的端口号 //3.打包对象(需要给包裹贴标签 信息 + ip + port) DatagramPacket datagramPacket = new DatagramPacket(msgBytes, length, address, port); //4.发送数据 datagramSocket.send(datagramPacket); //5.释放资源 datagramSocket.close(); } }
接收端
逻辑:1.编写接收端Socket对象
2.从缓冲区接收数据包
3.解析包(拆包)
4.释放资源
package com.blueSky; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UDPReceiver { public static void main(String[] args) throws Exception { //1.创建接收端Socket对象(设置端口号为8888) DatagramSocket datagramSocket = new DatagramSocket(8888); //2.接收数据(调用方法从缓存区中获取数据) //使用字节(byte)数组来接收数据 4000 byte[] msgReceive = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(msgReceive,msgReceive.length); datagramSocket.receive(datagramPacket); //该方法有个阻塞,接收不到数据就会被阻塞,接收到数据继续运行 //3.解析数据(拆包,方法来自dataGramPackage对象) InetAddress address = datagramPacket.getAddress(); // 获得InetAddress对象 String hostAddress = address.getHostAddress(); //获得发送端主机名 String hostName = address.getHostName(); //获得发送端Ip地址 byte[] data = datagramPacket.getData(); //获得发送的内容 int length = datagramPacket.getLength();//获得发送数据(字节)的具体长度 System.out.println(hostAddress); System.out.println(hostName); //输出byte[]类型数据(转成字符串) String dataString = new String(data,0,length,"UTF-8"); System.out.println(dataString); //4.释放资源 datagramSocket.close(); } }
相关文章推荐
- java网络编程(TCP与UDP)
- JavaAPI之网络编程UDP/TCP简述及示例
- Java 网络编程之 TCP/UDP
- 网络编程_概念_网络_端口_URL_TCP_UDPJAVA184
- Java网络编程中的TCP,UDP通信方式详解
- Java网络编程,UDP TCP
- 【java面试系列之网络编程】TCP和UDP的区别、TCP协议的三次握手和四次挥手、TCP协议的通信状态、网络编程时的同步、异步、阻塞、非阻塞、进程间的通信方式、TCP的流量控制和拥塞控制
- java 网络编程 基于TCP ,UDP的网络传输
- Java 网络编程之 TCP/UDP
- 黑马程序员-------Java笔记--------网络编程(UDP与TCP基本步骤)
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- java的基础网络编程:TCP/UDP
- Java网络编程:TCP和UDP
- Java 网络编程之 TCP/UDP
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- java中的网络编程详解 TCP 和UDP
- 【java编程】tcp/udp——Socket网络编程部分
- Java基础23天--05--网络编程(TCP和UDP)
- Java 网络编程之 TCP/UDP