Socket套接字(TCP流)篇

本文介绍了Java中的ServerSocket和Socket类在TCP回显服务器和客户端中的应用,包括连接管理、数据传输和高并发处理策略,以及资源管理(如Scanner和PrintWriter的内存泄漏问题)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ServerSocket

ServerSocket是创建TCP服务端Socket的API.

ServerSocket构造方法:

方法签名 方法说明
ServerSocket(int port) 创建一个服务端套接字Socket,并绑定到指定端口

ServerSocket方法:

方法签名 方法说明
Socket accept() 开始监听指定端口(创建时绑定的端口),当有客户端连接时,返回一个服务端Socket对象,并基于该Socket建立与客户端的连接 ,否则阻塞等待
void close() 关闭套接字

Socket

Socket是客户端Socket,或者是服务端中收到客户端建立连接的请求后,返回的服务端Socket.

Socket的构造方法:

方法签名 方法说明
Socket(String host, int port) 创建一个客户端套接字Socket, 并与对应主机,对应ip建立连接

Socket方法:

方法签名 方法说明
InetAddress getInetAddress() 返回套接字连接的地址
InputStream getInputStream() 返回套接字的输入流
OutputStream getOutputStream() 返回套接字的输出流

案例演示

TCP回显服务器

public class TcpEchoServer {
   
    private ServerSocket serverSocket = null;
    public TcpEchoServer(int port) throws IOException {
   
        serverSocket = new ServerSocket(port);
    }

    public void start() throws IOException {
   
        System.out.println("服务器启动!");
        while (true) {
   
            // 1. 处理客户端的连接
            // 把内核中的连接获取到应用程序中了,连接相当于一个个任务,放在队列中
            // 类似于生产者消费者模型
            // 如果没有客户端连接成功,就会进入阻塞.
            // 从队列中出序号最前面的连接, 与三次握手没有关系
            Socket clientSocket = serverSocket.accept();
            Thread thread = new Thread(() -> {
   
                try {
   
                    processConnection(clientSocket);
                } catch (IOException e) {
   
                    throw new Run
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值