一、UDP协议
(一)服务器端:
步骤如下:
-
1、创建接收端Socket对象
-
2、创建一个接收数据包
-
3、调用socket对象的接收数据方法
-
4、解析数据包,并将其输出在控制台
-
5、释放资源
代码实现如下:
public class ReceiveDemo { public static void main(String[] args) throws IOException { //创建接收端socket对象 DatagramSocket ds = new DatagramSocket(12345); //创建接收数据包 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); //接收数据 ds.receive(dp); //解析数据包 String ip = dp.getAddress().getHostName(); String datas = new String(dp.getData(), 0, dp.getLength()); System.out.println("接收到来自 "+ip+" 的数据:"+datas); //释放资源 ds.close(); } }
(二)客户端:
步骤如下:
-
1、创建发送端Socket对象
-
2、创建数据,并把数据打包
-
3、调用socket对象的发送方法来发送数据包
-
4、释放资源
代码实现如下:
public class SendDemo { public static void main(String[] args) throws IOException { //创建发送端socket对象 DatagramSocket ds = new DatagramSocket(); //创建需要发送的数据,并封装成数据包 byte[] datas = "Hello UDP".getBytes(); DatagramPacket dp = new DatagramPacket(datas, datas.length, netAddress.getByName("127.0.0.1"), 12345); //发送 ds.send(dp); //释放资源 ds.close(); } }
服务器端收到数据如下:
二、TCP协议
(一)服务器端:
步骤如下:
-
1、创建服务器端socket对象(ServerSocket类)
-
2、监听客户端连接。并且针对每一个客户端都返回一个socket对象(Socket类的实例)
-
3、获取输入流,读取数据
-
4、释放资源
代码实现如下:
public class ServerDemo {
public static void main(String[] args) throws IOException{
//创建ServerSocket对象
ServerSocket ss = new ServerSocket(12345);
//监听客户端连接。返回客户端socket对象
Socket s = ss.accept();
//获取输入流,读取数据
InputStream is = s.getInputStream();
byte[] datas = new byte[1024];
int len = is.read(datas);
System.out.println("Server:"+new String(datas, 0, len));
//获取输出流,写出反馈
OutputStream os = s.getOutputStream();
os.write("数据已收到".getBytes());
//释放资源
s.close();
}
}
(二)客户端:
步骤如下:
- 1、创建发送端socket对象(这一步如果成功,表明连接已经建立成功)
- 2、获取输出流,发送数据
- 3、释放资源
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建socket对象
Socket s = new Socket("127.0.0.1", 12345);
//获取输出流
OutputStream os = s.getOutputStream();
os.write("Hello TCP".getBytes());
//获取输入流
InputStream is = s.getInputStream();
byte[] datas = new byte[1024];
int len = is.read(datas);
System.out.println("Client:"+new String(datas, 0, len));
//释放资源
s.close();
}
}
运行结果如下:
服务器端收到消息:
客户端收到反馈:
Java新手,若有错误,欢迎指正!