TCP通信-实现 1 发 1 收

TCP协议回顾:

  • TCP是一种 面向连接 , 安全 、可靠 的传输数据的协议
  • 传输前,采用 "三次握手" 方式,点对点通信 ,是可靠的
  • 在连接中可进行大数据量的传输

编写 客户端 代码

java 复制代码
package com.csdn.d5_socket1;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;

/**
 * 目标:完成 Socket 网络编程入门案例的 客户端开发,实现 1 发 1 收
 */
public class ClientDemo1 {
    public static void main(String[] args) {

        try{
            System.out.println("===客户端启动===");
            //1、创建Socket通信管道请求有服务端的连接
            Socket socket = new Socket("127.0.0.1", 7777);
            //2、从socket通信管道中得到一个字节输出流 负责发送数据
            OutputStream os = socket.getOutputStream();
            //3、把低级的字节流包装成打印流
            PrintStream ps = new PrintStream(os);
            //4、发送消息
            ps.println("我是TCP的客户端,我已经与你对接,并发出邀请;约吗?");
            ps.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

编写 服务端 代码、原理分析

java 复制代码
package com.csdn.d5_socket1;

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

/**
 * 目标:开发 Socket 网络编程入门代码的 服务端 ,实现接收消息
 */
public class ServerDemo2 {
    public static void main(String[] args) {

        try {
            System.out.println("===服务端启动成功===");
            //1、注册端口
            ServerSocket serverSocket = new ServerSocket(7777);
            //2、必须调用accept方法:等待接收客户端的Socket连接请求,建立Socket通信管道
            Socket socket = serverSocket.accept();
            //3、从socket通信管道中得到一个字节输入流
            InputStream is = socket.getInputStream();
            //4、把字节输入流包装成缓冲字符输入流进行消息的接收
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            //5、按照行读取消息
            String msg;
            if ((msg = br.readLine()) != null) {
                System.out.println(socket.getRemoteSocketAddress() + "说了:" + msg);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
相关推荐
加农炮手Jinx1 小时前
Flutter for OpenHarmony 实战:JWT — 构建安全的无状态认证中心
网络·flutter·华为·harmonyos·鸿蒙
love530love1 小时前
Scoop 完整迁移指南:从 C 盘到 D 盘的无缝切换
java·服务器·前端·人工智能·windows·scoop
iambooo2 小时前
Shell在日志分析与故障排查中的实战应用
linux·服务器·网络
一路往蓝-Anbo2 小时前
第 9 章:Linux 设备树 (DTS) ——屏蔽与独占外设
linux·运维·服务器·人工智能·stm32·嵌入式硬件
左手厨刀右手茼蒿2 小时前
Flutter for OpenHarmony: Flutter 三方库 image_size_getter 零加载极速获取图片尺寸(鸿蒙 UI 布局优化必备)
android·服务器·flutter·ui·华为·harmonyos
_麦麦_2 小时前
《九章云络书·织网布阵玄机》上篇
网络·智能路由器
王码码20352 小时前
Flutter for OpenHarmony:Flutter 三方库 bluez 玩转 Linux 风格的蓝牙操作(蓝牙底层互操作)
linux·运维·服务器·前端·flutter·云原生·harmonyos
雷帝木木2 小时前
Flutter for OpenHarmony:Flutter 三方库 money2 — 坚不可摧的鸿蒙金融核心组件
网络·flutter·http·华为·金融·harmonyos·鸿蒙
余瑜鱼鱼鱼3 小时前
数据链路层相关知识总结
网络
吕司4 小时前
Linux信号产生
linux·运维·服务器