Socket传输为什么读的次数和写的次数不一致

在Socket通信中,由于操作系统套接字缓冲区的影响,数据被拆分成多个包传输。发送方可能需要累积多个数据块一次性发送,而接收方利用缓冲区接收。举例说明了客户端和服务器在读写数据时的不一致情况。
摘要由CSDN通过智能技术生成

在Socket通信中,数据往往会被分为多个数据包进行传输,每次发送的数据包大小由操作系统的套接字缓冲区决定。因此,发送方可能需要将多个数据块缓存起来,并将它们作为一个数据包一次性发送。而接收方同样需要使用缓冲区来接收和处理这些数据块。
客户端代码:

class TcpClient {
   
    public static void main(String[] args) throws Exception {
   
        //创建客户端的socket服务。指定目的主机和端口
        Socket s = new Socket("127.0.0.1", 10003);
		System.out.println("客户端启动");
		byte[] bytes = new byte[1024 * 1024];
		int count = 0;
		int length = 0;
		//为了发送数据,应该获取socket流中的输出流。
        OutputStream out = s.getOutputStream();
		BufferedInputStream inp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值