TCP协议常用API以及实现TCP客户端服务端

目录

TCP常用API

ServerSocket 

Socket 

TCP服务端(单线程) 

属性+构造方法:

代码编写 

TCP客户端(单线程) 

属性+构造方法 

代码编写 

单线程TCP客户端—服务端通信结果 

单线程TCP存在的问题 

TCP服务端(支持多个客户发送请求) 

多线程版本服务端 

线程池版本服务端   

关于TCP的长连接和短连接 

短连接工作过程 

长连接工作过程 


TCP常用API

ServerSocket:专门给服务端使用的socket。 

Socket:既可以提供给客户端使用,也可以给服务端使用。 

ServerSocket 

构造方法:

方法签名 方法说明
ServerSocket(int port) 创建一个服务端嵌套字,并且指定服务端所占用的进程

成员方法 accept: 

方法签名 方法说明
Socket accept()

TCP是"有连接"的协议,TCP客户端与服务端一定要建立连接,才可以互相发送消息。因此这个accept方法,返回的socket对象,服务端就是通过这个socket对象和客户端进行通信的。

如果服务端没有收到socket对象,那么就会阻塞等待,无法进行通信。

Socket 

  对于服务端来说,是由accept()方法返回的的,返回的socket对象用于和客户端进行通信。 

构造方法 :

对客户端来说,构造方法构造对象时需要指定ip地址和端口号,这个ip和端口号是服务端的 

  

两个普通常用的方法: 

方法签名 方法说明
getInputStream() 通过socket对象,获取到内部的输入流对象
getOutputStream() 通过socket对象,获取到内部的输出流对象

TCP服务端(单线程) 

属性+构造方法:

       需要在TcpEchoServer内部封装一个属性,这个属性是ServerSocket。

       在构造方法当中,需要指定ServerSocket占用哪个端口号,此端口号就是服务端的端口号

代码编写 

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class TcpEchoServer {
    /**
     * 用于TCP客户端和服务端通信的socket对象
     */
    private ServerSocket serverSocket;

    /**
     * 构造方法指定服务端所占用的端口号
     */
    public TcpEchoServer(int port) throws IO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渴望力量的土狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值