TCP通信练习1——多发多收

  1. TCP通信基础

    • TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
    • TCP通信需要建立连接(三次握手),数据传输完毕后需要断开连接(四次挥手)。
  2. 客户端功能

    • 客户端需要多次发送数据,这意味着客户端在与服务器建立连接后,可以连续发送多条消息。
  3. 服务器功能

    • 服务器需要接收客户端多次发送的数据,并将接收到的数据打印出来。
    • 服务器通常会处于监听状态,等待客户端的连接请求。
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test1;

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws IOException {
        // 题目1: 多发多收
        // 客户端: 多次发送数据
        // 服务器: 接受多次接收数据,并打印

        // 1、创建Socket象并连接服务端
        Socket socket = new Socket("127.0.0.1",10000);

        // 2、写出数据
        Scanner sc = new Scanner(System.in);
        OutputStream os = socket.getOutputStream();
        while(true){
            System.out.println("请输入你想要发送的数据:");
            String str = sc.nextLine();
            if("886".equals(str)){
                break;
            }
            os.write(str.getBytes());

        }
        // 3、释放资源
        socket.close();
    }
}
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        // 题目1: 多发多收
        // 客户端: 多次发送数据
        // 服务器: 接受多次接收数据,并打印

        // 1、创建对象ServerSocket绑定端口
        ServerSocket ss = new ServerSocket(10000);
        // 2、等待客服端连接
        Socket socket = ss.accept();
        // 3、读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        int b;
        while ((b = br.read()) != -1) {
            System.out.print((char) b);
        }
        // 4、关闭流
        socket.close();
        ss.close();
        System.out.println("服务端结束");
    }
}
相关推荐
以太浮标2 小时前
华为eNSP模拟器综合实验之- ACL控制列表核心命令全解析及场景应用
运维·网络·网络协议·华为·信息与通信
yosh'joy!!2 小时前
IT/OT接口规范
网络协议·接口·modbus tcp·modbus rtu
小王不爱笑1322 小时前
IO 模型
开发语言·python
短剑重铸之日2 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu2 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
AI+程序员在路上2 小时前
CANopen 协议:介绍、调试命令与应用
linux·c语言·开发语言·网络
2401_831824962 小时前
基于C++的区块链实现
开发语言·c++·算法
江畔何人初2 小时前
kube-apiserver、kube-proxy、Calico 关系
运维·服务器·网络·云原生·kubernetes
网安Ruler3 小时前
UDS 协议分析及模拟测试
网络
m0_518019483 小时前
C++与机器学习框架
开发语言·c++·算法