TCP通信实现一发一收的详细代码与思路

代码实现
服务端代码实现

服务端需要监听指定端口,等待客户端连接,接收客户端消息并回复。

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        // 创建ServerSocket对象,绑定端口8888
        ServerSocket serverSocket = new ServerSocket(8888);

        // 等待客户端连接
        Socket socket = serverSocket.accept();
        System.out.println("客户端已连接");

        // 获取输入流,读取客户端发送的数据
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String message = in.readLine();
        System.out.println("收到客户端消息:" + message);

        // 获取输出流,向客户端发送数据
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        out.println("服务器已收到你的消息");

        // 关闭资源
        in.close();
        out.close();
        socket.close();
        serverSocket.close();
    }
}

客户端代码实现

客户端需要连接服务端,发送消息并接收服务端回复。

import java.io.*;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        // 创建Socket对象,连接服务器
        Socket socket = new Socket("localhost", 8888);

        // 获取输出流,向服务器发送数据
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        out.println("你好,服务器");

        // 获取输入流,读取服务器返回的数据
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String response = in.readLine();
        System.out.println("收到服务器回复:" + response);

        // 关闭资源
        out.close();
        in.close();
        socket.close();
    }
}

实现思路

服务端启动后监听指定端口,通过accept()方法阻塞等待客户端连接。客户端通过指定IP和端口连接服务端。连接建立后,双方通过输入输出流进行通信。

服务端使用BufferedReader读取客户端发送的消息,使用PrintWriter发送回复。客户端同样使用PrintWriter发送消息,BufferedReader接收回复。通信完成后,双方关闭连接释放资源。

总结

TCP通信需要服务端和客户端建立连接后进行数据传输。服务端通过ServerSocket监听端口,客户端通过Socket连接服务端。双方通过输入输出流实现数据交换,通信完成后需关闭连接。这种一发一收模式是TCP通信的基础,可扩展为持续通信或多客户端处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值