Java 中的 Socket编程

Socket 是什么?

Socket 又称为网络套接字,属于网络编程的范畴。Socket 在网络上具有唯一标识的IP和端口号组成,构成一个唯一能识别的标识符套接字。

Socket 原理机制

通信的两端都有Socket

网络通信其实就是Socket间的通信

数据在两个Socket 至今进行IO传输

Socket 怎么使用?

1、首先创建一个接收端Socket

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/*
UDP 协议接收数据
首先运行 接收端 ,然后再运行 发送端
* */
public class ReceiveSocket {

public static void main(String[] args) throws IOException {

// 创建接收端Socket对象,并传入端口号(ps:该端口号必须与发送端的端口号一致)
DatagramSocket datagramSocket = new DatagramSocket(10086);

// 创建一个接收容器用于接收数据
byte[] by = new byte[1024];
int length = by.length;
DatagramPacket datagramPacket = new DatagramPacket(by,length);

// 开始接收数据(ps:该接收方法是阻塞式的)
datagramSocket.receive(datagramPacket);


// 获取发送方的IP数据
InetAddress inetAddress = datagramPacket.getAddress();
String ip = inetAddress.getHostAddress();


// 解析数据
// 获取数据缓冲区
byte[] data = datagramPacket.getData();
// 获取数据的实际长度
int actualLength = datagramPacket.getLength();
// 将二进制数据转换为字符串数据;从下标0开始到 数组长度的数据 转换为字符串
String strData = new String(data,0,actualLength);
System.out.println("发送方的IP为:"+ip+"\t数据为:"+strData);
// 发送方的IP为:192.168.0.133 数据为:你好


// 释放资源
datagramSocket.close();





}

}

2、然后在创建一个发送端Socket

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/*
* UDP 协议发送数据
* */
public class SendSocket {

public static void main(String[] args) throws IOException {

// 创建发送端 Socket 对象
DatagramSocket datagramSocket = new DatagramSocket();

// 创建要发送的数据
String msg = "你好";
// 将字符串数据转换为二进制数据
byte[] by = msg.getBytes();
// 获取数据的长度,以便传入DatagramPacket对象中
int length = by.length;
// 设置要发送的IP地址
InetAddress inetAddress = InetAddress.getByName("192.168.0.133");
// 设置要发送的端口号
int port = 10086;
// 创建数据包实例对象
DatagramPacket datagramPacket = new DatagramPacket(by,length,inetAddress,port);


// 发送数据
datagramSocket.send(datagramPacket);

// 释放资源
datagramSocket.close();
}
}

3、先运行接收端main 函数, 然后再运行 发送端 main函数

4、效果图

如果觉得文章有帮助到你,可以扫描以下二维码
   请本文作者 喝一杯
pay_weixin pay_weixin

发表评论

电子邮件地址不会被公开。 必填项已用*标注