目录
1.网络编程入门
2.UDP通信程序
3.TCP通信程序
1.网络编程入门
public static void main(String[] args) throws UnknownHostException {
InetAddress byAddress = InetAddress.getByName("justlikeyou");
System.out.println(byAddress.getHostName());
System.out.println(byAddress.getHostAddress());
端口:应用程序在设备中唯一的标识。
端口号:用两个字节表示的整数,它的取值范围是0~65535。
其中0~1023之间的端口号用于一些知名的网络服务或者应用。
我们自己使用1024以上的端口号就可以了。 注意:一个端口号只能被一个应用程序使用。
协议:计算机网络中,连接和通信的规则被称为网络通信协议
UDP协议 用户数据报协议(User Datagram Protocol) UDP是面向无连接通信协议
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据。
TCP协议 传输控制协议 (Transmission Control Protocol)
TCP协议是面向连接的通信协议。
速度慢,没有大小限制,数据安全。
2.UDP通信程序
UDP发送数据步骤
- 创建发送端的DatagramSocket对象
- 创建数据,并把数据打包(DatagramPacket)
- 调用DatagramSocket对象的方法发送数据
- 释放资源
UDP接收数据步骤
- 创建接收端的DatagramSocket对象
- 创建一个箱子,用于接收数据
- 调用DatagramSocket的方法接收数据并将数据放入箱子中
- 解析数据包,并把数据在控制台显示
- 释放资源
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket();
byte[]bytes="hello".getBytes(StandardCharsets.UTF_8);
DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("justlikeyou"),12345);
datagramSocket.send(datagramPacket);
datagramSocket.close();
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket(12345);
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
datagramSocket.receive(datagramPacket);
String s = new String(datagramPacket.getData(),0, datagramPacket.getLength());
System.out.println(s);
datagramSocket.close();
3.TCP通信程序
TCP发送数据步骤
- 创建客户端的Socket对象(Socket)
- 与指定服务端连接 Socket(String host, int port)
- 获取输出流,写数据 OutputStream getOutputStream()
- 释放资源 void close()
TCP接收数据
- 创建服务器端的Socket对象(ServerSocket)
- ServerSocket(int port) 监听客户端连接,返回一个Socket对象
- Socket accept() 获取输入流,读数据,并把数据显示在控制台 InputStream getInputStream()
- 释放资源 void close()
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(12345);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
byte[] bytes = new byte[1024];
int i = inputStream.read(bytes);
System.out.println(new String(bytes,0,i));
accept.close();
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",12345);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("dfgh".getBytes());
outputStream.close();