Java网络编程

Java 网络编程

基本通信架构

  • CS架构(客户端/服务端)
  • BS架构(浏览器/服务端)

网络通信三要素:IP、端口、协议

本机ip:127.0.0.1 或者localhost

InetAddress类 常用方法

alt text

UDP通信

特点:无连接,不可靠通信

java 提供了一个java.net.DatagramSocket类来实现UDP通信

  • DatagramSocket 用于创建客户端和服务端

alt text
alt text

  • DatagramPacket 用于创建数据包
    alt text

TCP通信

特点:面向连接、可靠通信
通信双方会采用“三次握手“方式建立可靠连接,实现端到端通信;

java 提供了一个java.net.Socket类来实现TCP通信

TCP 客户端开发
alt text

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.cslb.demo3tcp;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class TcpCilentDemo1 {
public static void main(String[] args) throws IOException {
//与指定的服务端建立连接,返回客户端Socket对象
Socket socket = new Socket("127.0.0.1",8080);

//获得字节输出流
OutputStream os = socket.getOutputStream();

//包装得到特殊数据流
DataOutputStream dos = new DataOutputStream(os);

//发送数据
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入您要发送的话;");
String str = scanner.nextLine();
dos.writeUTF(str);
}
}
}

TCP服务端开发
alt text

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.cslb.demo3tcp;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServerDemo1 {
public static void main(String[] args) throws IOException {
// 为服务端程序注册端口
ServerSocket server = new ServerSocket(8080);

//阻塞等待客户端的连接请求
Socket socket = server.accept();

//获得字节输入流
InputStream is = socket.getInputStream();

DataInputStream dis = new DataInputStream(is);

//输出客户端ip和端口
System.out.println("ip地址为:" + socket.getInetAddress().getHostAddress() + " 端口号:" + socket.getPort());

//获取数据
while (true) {
String str = dis.readUTF();
//输出数据
System.out.println(str);
}
}
}



Java网络编程
https://cs-lb.github.io/2024/10/18/Java/Java网络编程/
作者
Liu Bo
发布于
2024年10月18日
许可协议