标签:color stat 赋值 占用 获取 学习 des main strong
概述:
Socket又称为套接字,用于描述IP地址和端口,是一个通信链的句柄;
Socket是为网络编程提供的一种机制;
通信两端都有Socket,网络编程就是Socket之间的通信,数据在两个Socket之间通过IO流传输。
学习Socket编程之前,先要了解网络通信的三i个要素,即IP、端口号和传输协议。
ip是设备在网络里面的地址。
端口号是用于标识进程的逻辑地址
协议:主要有UDP协议和TCP协议
下面就围绕UDP和TCP这两种协议进行网络编程:
1.UDP协议
代码如下:
public static void main(String[] args) throws Exception { //创建发送端Socket对象 DatagramSocket socket = new DatagramSocket(); //创建数据并打包 //DatagramPacket(byte buf[], int length, InetAddress address, int port) String message = "hello,UDP,I‘m sender"; byte[] bytes = message.getBytes(); int length = bytes.length; InetAddress address = InetAddress.getByName("DESKTOP-KHNDCKQ"); int port =8888; DatagramPacket p = new DatagramPacket(bytes,length,address,port); //发送数据 socket.send(p); //释放资源 socket.close(); }
需要注意的是,发送端发送数据,需要指定目标ip或主机名,以及端口号。
代码如下:
//创建接收端对象 DatagramSocket socket = new DatagramSocket(8888); //接收数据 byte[] bytes = new byte[1024]; DatagramPacket data = new DatagramPacket(bytes,bytes.length); socket.receive(data);//阻塞 //解析数据 InetAddress address = data.getAddress();//获取发送端IP byte[] receivedata = data.getData(); int length = data.getLength(); //输出数据 System.out.println("send--->>"+address.getHostAddress()); System.out.println(new String(receivedata,0,length)); System.out.println(new String(bytes,0,length)); //释放资源 socket.close();
说明:在接收端运行的时候,程序会在
socket.receive(data);
这一步进行阻塞,也就是等待发送端发送数据。接收的时候,也是用DatagramPacket类进行接收。
获取数据的方式有两种,一个是构造方法中传入的bytes参数,接受到数据后会直接写到bytes里;还有一种接受方式是通过DatagramPacket实例化对象的getData()方法,赋值给任意要给byte数组。
当然,在Socket编程中有一些墨守成规的规定,也是需要遵守的。
注意事项:
DatagramPacket
标签:color stat 赋值 占用 获取 学习 des main strong
原文地址:https://www.cnblogs.com/wlym/p/9736041.html