我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaTCP网络通信协议详细讲解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaTCP网络通信协议详细讲解

TCP与UDP都属于TCP/IP协议

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。 一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂, 只简单的描述下这三次对话的简单过程:

1)主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2)主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发送,一个在接收,协调工作)的数据包 :“可以,你什么时候发?”,这是第二次对话;

3)主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”, 这是第三次对话。

三次“对话”的目的是使数据包的发送和接收同步, 经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP的三次握手过程保证了传输的安全性,同时会确认对方是否接受到信息

断开的时候进行四次

UDP(User Data Protocol,用户数据报协议)是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

由于不需要像TCP那样的握手过程,使得UDP的传输速度非常快捷,但他不保证传输的安全性,也不确认对方是否接收到信息

实现代码:

//向指定ip发送信息
public static void main(String[] args) throws Exception{
    Socket s=new Socket(InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()),10000);
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    //封装输出流对象
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    String line;
    while (true) {
        if ((line=br.readLine())!=null){
            if("1024".equals(line)) {
                bw.write(line);
                bw.newLine();
                break;
            }
            bw.write(line);
            bw.newLine();
        }
        bw.flush();
        //获取输出流对象
    }
    //释放资源
    s.close();
}
//接收发送到本机的信息
ServerSocket socket=new ServerSocket(10000);
Socket accept = socket.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(accept.getInputStream()));
String line;
while ((line=br.readLine())!=null){
    System.out.println(line);
}

要让俩台进行互通就可以实现了,让他们运行到一起可以使用线程进行封装。

UDP使用的是

//创建发送端的Socket对象(DatagramSocket)
//创建数据,并把数据打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。

使用UDP需要将ip地址固定成ipconfig所显示的ip网关等内容

DatagramSocket ds = new DatagramSocket();
byte[] bys = "hello,udp,我来了".getBytes();
        DatagramPacket dp = new DatagramPacket(bys,bys.length,  InetAddress.getByName("10.102.13.18"),10086);
        //调用DatagramSocket对象的方法发送数据
        //void send(DatagramPacket p) 从此套接字发送数据报包
        ds.send(dp);
        System.out.println("已发送:"+new String(dp.getData(),0,dp.getLength()));
        //关闭发送端
        //void close() 关闭此数据报套接字
        ds.close();
DatagramSocket ds = new DatagramSocket(10086);
while (true) {
    //创建一个数据包,用于接收数据
    byte[] bys = new byte[1024];
    DatagramPacket dp = new DatagramPacket(bys, bys.length);
    //调用DatagramSocket对象的方法接收数据
    ds.receive(dp);
    System.out.println("-----");
    //解析数据包,并把数据在控制台显示
    System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
}

我们同样使用DatagramSocket 方法进行接收数据

到此这篇关于Java TCP网络通信协议详细讲解的文章就介绍到这了,更多相关Java TCP内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaTCP网络通信协议详细讲解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【网络原理】网络通信与协议

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 一. 网络发展史二. 网络通信基础1. IP地址2. 端口号3. 认识协议(核心概念)4. 五元组5.
2023-08-16

python 网络通信协议/TCP,UD

一.osi七层协议互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层协议具体内容 各层的功能简述: 【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传
2023-01-30

AndroidMQTT与WebSocket协议详细讲解

MQTT(消息队列遥测传输)是ISO标准(ISO/IECPRF20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议
2022-11-13

【网络】HTTP协议详解

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪
2023-08-23

NAT协议(网络地址转换协议)详解

NAT协议(网络地址转换协议)详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程,主要用于实现私有网络访问公
2023-08-23

AndroidIntent通信详细讲解

Android进程间通信(IPC,Inter-ProcessCommunication)底层采用的是Binder机制,具体到应用层有网友根据安卓四大组件将进程间通信方式分为对应的四种方式Activity,Broadcast,ContentProvider,Service
2022-12-17

第二十七天- 网络通信协议 TCP UD

1.网络通信协议  osi七层模型:按照分工不同把互联网协议从逻辑上划分了层级    socket层 2.理解socket:  Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一
2023-01-30

关于简单网络管理协议的讲解

  本篇文章给大家带来的就是关于简单网络管理协议SNMPV2的详细解析,本篇文章会教给大家网络管理协议SNMPV2的知识点详细解析,希望本篇文章能帮助到你,对你有所收获,网络管理协议就是专门设计用于在 IP 网络管理网络节点,希望大家仔细阅读文章。  1. SNMPv2的新功能:SNMPv2既可以支持完全集中的网络管理
关于简单网络管理协议的讲解
2024-04-18

redis protocol通信协议及使用详解

目录简介Redis的高级用法Redis中的piplineRedis中的Pub/SubRESP protocolSimple StringsBulk StringsRESP IntegersRESP ArraysRESP ErrorsInli
2022-07-15

C++网络编程详细讲解

计算机是通过TCP/IP协议进行互联从而进行通信的,为了把复杂的TCP/IP协议隐藏起来,更方便的实现计算机中两个程序进行通信,引出了socket这个概念
2022-11-13

详解python3实现的web端json通信协议

之前有用python3实现过tcp协议的,后来又实现了http协议的通信,今天公司想做一个功能自动测试系统, 下午弄了一会,发现json格式的实现可以更简单一点,代码如下:简单解说一下,一般与服务器通信分两块,一块是get协议,一块是pos
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录