UDP
UDP发送端
package com.shsxt.lianxi;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
/*
udp实现发送端的基本流程: 发送端和服务端是平等的
1.定义发送端 DatagramSocket(端口号) 指定发送端的端口号
2.准备数据
3.对数据打包 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
4.发送void send(DatagramPacket p)
5.关闭 void close() 关闭此数据报套接字。
*/
public class UDP01 {
public static void main(String[] args) throws IOException {
System.out.println("————————————发送了————————————");
//1.定义发送端 DatagramSocket(端口号) 指定发送端的端口号
DatagramSocket data = new DatagramSocket(8888);
//2.准备数据
String st = "你好啊";
//3.对数据打包 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
byte[] by = st.getBytes();
DatagramPacket dgr = new DatagramPacket(by,0,by.length,new InetSocketAddress("127.0.0.1",9999));
//4.发送void send(DatagramPacket p)
data.send(dgr);
//5.关闭 void close() 关闭此数据报套接字。
data.close();
}
}
UDP接收端
package com.shsxt.lianxi;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/*
* 接收端基本流程:
* 1.定义接收端 DatagramSocket(int port)
* 2.准备字节数组
* 3.准备包裹用来接收数据 DatagramPacket(byte[] buf, int length)
* 4.接收 receive
5.从包裹中获取数据
* byte[] getData()
返回数据缓冲区。
int getLength()
返回将要发送或接收到的数据的长度。
6.关闭
*/
public clas
s UDP02 {
public static void main(String[] args) throws IOException {
System.out.println("————————————接收了————————————");
// 1.定义接收端 DatagramSocket(int port)
DatagramSocket data = new DatagramSocket(9999);
//2.准备字节数组
byte[] by = new byte[1024];
//3.准备包裹用来接收数据 DatagramPacket(byte[] buf, int length)
DatagramPacket dgr = new DatagramPacket(by,0,by.length);
//4.接收
data.receive(dgr);
//5.从包裹中获取数据
byte[] car = dgr.getData();
System.out.println(new String(car,0,car.length));
//6.关闭
data.close();
}
}
TCP
TCP发送端
package com.shsxt.lianxi;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* Socket 此类实现客户端套接字
* 客户端
* 1.定义客户端 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
* 2.IO操作
* 输出流 DataOutputStream OutputStream getOutputStream() 返回此套接字的输出流。
* 3.刷出
* 4.关闭
*/
public class TCP01 {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("——发送——");
//1.定义客户端 Socket(String host, int port)
Socket sock = new Socket("127.0.0.1",4444);
//输出流OutputStream getOutputStream()
DataOutputStream out = new DataOutputStream(sock.getOutputStream());
out.writeUTF("你好啊");
out.flush();
out.close();
sock.close();
}
}
TCP接收端
package com.shsxt.lianxi;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/*
* ServerSocket 此类实现服务器套接字。
* TCP服务端
* 1.定义服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
* 2.阻塞式监听 一个客户端连接成功,就是一个socket
* 3.io操作 DataInputStream getInputStream
* 4.关闭
*/
public class TCP02 {
public static void main(String[] args) throws IOException {
System.out.println("——接收——");
//1.定义服务端 ServerSocket(int port)
ServerSocket ser = new ServerSocket(4444);
//2.阻塞式监听
Socket so = ser.accept();
//3.获取流
DataInputStream data = new DataInputStream(so.getInputStream());
//4.读取数据
System.out.println(data.readUTF());
data.close();
ser.close();
}
}