谈谈TCP和UDP的一些简单应用

TCP 和 UDP 的区别 前言 UDP TCP TCP 的三次握手 TCP 四次挥手 累计确认 顺序问题和丢包问题 流量控制的问题 拥塞控制的问题 总结及面试问题 前言 前端的面试中经常问的 TCP 和 UDP 的区别,网上也有好多内容,比如 TCP 和 UDP 的区别 TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 网络编程中最重要的就是SOCKET,它其实也就是监听端口的原理。和我们用手机发短信的原理应该是大致无二(我是这样理解的),而JAVA最出色的一点也就是“无痛苦连网”。 网络最基本的精神就是让两台机器连接起来,“被呼叫的一方”也就是服务器,而“找人的一方”则叫做客户机,所以说在连接中服务器、客户机也就是一个相对的概念了。而我们对机器的标识主要是通过IP地址和端口来区分的。 “传输控制协议”TCP和“用户数据报协议”是两种不同的协议,JAVA对这两种协议的支持基本是一致的,而它们本身最大的区别也就是发送的可靠性和速率,前者相比后者是可靠协议,后者当然是速度快得多了,下面我们分别用两个SOCKET下演示: eg1: //Clients.java import java.io.*; import java.net.*; public class Clients { public static void main(String[] args) throws Exception { InetAddress addr = InetAddress.getByName(null); Socket socket = new Socket(addr,2000); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())),true); byte[] b = new byte[2048]; String msg = new String(b,0,System.in.read(b)); out.println(msg); socket.close(); } } //Servers.java import java.io.*; import java.net.*; public class Servers { public static void main(String[] args) throws Exception { ServerSocket s = new ServerSocket(2000); try{ while(true){ Socket socket = s.accept(); try{ BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); StringBuffer sb = new StringBuffer(); int c; while( (c = in.read()) != -1 ){ char ch = (char)c; sb.append(ch); } System.out.println(sb.toString()); }catch(IOException e){ socket.close(); }finally{ socket.close(); } }//while }finally{ s.close(); }//try }//main } 此程式主要用Servers来进行无限监听,而Clients是客户机发送程式,他们的端口全采用2000。 eg2: //UDPsend.java import java.io.*; import java.net.*; /** * This class sends the specified text or file as a datagram to the * specified port of the specified host. **/ public class UDPSend { public static final String usage = "Usage: java UDPSend .../n" " or: java UDPSend -f "; public static void main(String args[]) { try { // Check the number of arguments if (args.length < 3) throw new IllegalArgumentException("Wrong number of args"); // Parse the arguments String host = args[0]; int port = Integer.parseInt(args[1]); // Figure out the message to send. // If the third argument is -f, then send the contents of the file // specified as the fourth argument. Otherwise, concatenate the // third and all remaining arguments and send that. byte[] message; if (args[2].equals("-f")) { File f = new File(args[3]); int len = (int)f.length(); // figure out how big the file is message = new byte[len]; // create a buffer big enough FileInputStream in = new FileInputStream(f); int bytes_read = 0, n; do { // loop until we've read it all n = in.read(message, bytes_read, len-bytes_read); bytes_read = n; } while((bytes_read < len)&& (n != -1)); } else { // Otherwise, just combine all the remaining arguments. String msg = args[2]; for (int i = 3; i < args.length; i ) msg = " " args[i]; message = msg.getBytes(); } // Get the internet address of the specified host InetAddress address = InetAddress.getByName(host); // Initialize a datagram packet with data and address DatagramPacket packet = new DatagramPacket(message, message.length, address, port); // Create a datagram socket, send the packet through it, close it. DatagramSocket dsocket = new DatagramSocket(); dsocket.send(packet); dsocket.close(); } catch (Exception e) { System.err.println(e); System.err.println(usage); } } } //UDPreceive.java import java.io.*; import java.net.*; /** * This program waits to receive datagrams sent the specified port. * When it receives one, it displays the sending host and prints the * contents of the datagram as a string. Then it loops and waits again. **/ public class UDPReceive { public static final String usage = "Usage: java UDPReceive "; public static void main(String args[]) { try { if (args.length != 1) throw new IllegalArgumentException("Wrong number of args"); // Get the port from the command line int port = Integer.parseInt(args[0]); // Create a socket to listen on the port. DatagramSocket dsocket = new DatagramSocket(port); // Create a buffer to read datagrams into. If anyone sends us a // packet containing more than will fit into this buffer, the // excess will simply be discarded! byte[] buffer = new byte[2048]; // Create a packet to receive data into the buffer DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // Now loop forever, waiting to receive packets and printing them. for(;;) { // Wait to receive a datagram dsocket.receive(packet); // Convert the contents to a string, and display them String msg = new String(buffer, 0, packet.getLength()); System.out.println(packet.getAddress().getHostName() ": " msg); // Reset the length of the packet before reusing it. // Prior to Java 1.1, we'd just create a new packet each time. packet.setLength(buffer.length); } } catch (Exception e) { System.err.println(e); System.err.println(usage); } } } 在UDP中主要的类是DatagramSocket()和DatagramPacket(),而在UDPreceive中,被接受的字节是受限制,这些感觉不是太好,既然buf是一个字节数组,我们实在是很奇怪为什么构建器自己不能调查出数组的长度呢?唯一能猜测的原因就是C风格的编程使然,那里的数组不能自己告诉我们它有多大。 而我们实际使用的过程中,当然不仅仅限于这些,其中要考虑有多台客户机来连接服务器,所以要考虑到线程Thread的使用,如果再加上SWING,就可以做一个类似于QQ的SOCKET功能了,这仅仅限于我在学习SOCKET时的一些领悟。供大家参考。 - 主页: http://www.fls-cts.com/kkjvk/
TCP和UDP的区别(简单明了) 目录1 前言2 TCP2.1 TCP如何保证可靠传输3 UDP 你知道什么是TCP和UDP吗?你知道TCP和UDP有什么区别吗?可能大家平时总是听说过TCP和UDP,但是一直不知道它们是怎么回事。今天就给大家介绍一下。我们常用的网络通讯、软件聊天、以及大家平时所看的视屏都是通过这两种协议来进行数据传输的,那它们又是如何工作呢,又有什么区别呢。注:本篇文章也是在B占看别的博主视频总结写的TCP和UDP都是在传输层,在程序之间传输数据,TCP是基于连接的,UDP是基于非连接的。如果将进程与进程之间 阅读详情

相关推荐

C++基于TCP和UDP的socket通信

TCP和UDP属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它事先为要发送的数据开辟好连接通道(三次握手),然后再进行数据发送;而UDP则不为IP提供可靠性,一般用于实时的视频流传输,像rtp、rtsp就是建立在udp的基础上的。      首先谈谈tcp socket     tcp简单的三次握手过程如图,     SYN(Synchronize Sequence Numbe

4万+

TCP和UDP的区别及使用场景

TCP:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。UDP:Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 描述了 UDP。

Azreax的博客 5084

TCP和UDP总结(区别、优缺点、应用实例)

TCP和UDP的区别和优缺点以及应用实例 TCP和UDP区别总结: TCP面向连接,UDP是无连接的 TCP在开始数据传输之前要经过三次握手,UDP却不需要任何准备即可进行数据传输,因此UDP不会引入建立连接的时延 TCP提供可靠的服务,UDP尽最大努力交付,即不保证可靠交付 TCP传输数据具有重传机制,如果在传输数据的过程中发生丢包事件,发送方会重传丢失的分组,所以TCP保证发送的分组一定能到...

weixin_43784305的博客 4605

TCP和UDP的使用总结

总结:一.TCP/IP协议如何保证可靠性传输 二.TCP与UDP的区别和各自的使用场景 一.TCP/IP协议如何保证可靠性传输 TCP是Transmission Control Protocol,即传输控制协议。 在我看来,为了保证可靠信传输,TCP主要依靠的是控制数据传输的整个流程来保证可靠信传输的。 1.TCP协议在建立连接和断开连接有三次握手与四次挥手的过程,即<连接管理>。 2.在数据由发送方发送时,会计算一次<校验和>。 通过将发送的数据段都当做一个16位的整数,将这些

LiuNian_LiuLian的博客 516

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 415

Windows下飞桨PaddlePaddle 2.6.1 GPU版环境搭建全攻略(含CUDA 11.7配置避坑指南)

本文详细介绍了在Windows系统下搭建飞桨PaddlePaddle 2.6.1 GPU版环境的完整流程,特别针对CUDA 11.7和cuDNN的安装提供了避坑指南。从Anaconda环境配置、CUDA Toolkit安装到飞桨GPU版的验证,手把手帮助开发者高效完成深度学习环境搭建,解决常见问题并优化性能。

x8y9z0的博客 1096

简单收发编码解码UDP协议(一)

MainActivity package com.example.udpagreement; import java.io.UnsupportedEncodingException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import androi...

Juily家的小蜜果 2277

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

TCP协议和UDP协议的区别及其应用

下面是TCP和UDP的简单程序: 简单的TCP网络程序 https://blog.youkuaiyun.com/qq_37941471/article/details/80738319 简单的UDP网络程序 https://blog.youkuaiyun.com/qq_37941471/article/details/80726398 接着我们通过这两个协议来更直接的理解一下TCP协议和UDP协议: 这两个协议...

qq_37941471的博客 1万+

Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思

最近因为工作原因需要使用Qt开发一个类似于Visio的流程图组件,需满足基本的流程图功能,图元类型可自定义扩展,不同图元存有各类自定义数据,可以保存为xml文件,可以读取xml文件生成流程图等等。

qq_43793182的博客 1万+

E2B Agent Runtime Sandbox 沙箱技术架构研究

本实现指南基于E2B的技术架构,提供了完整的基于Firecracker和Docker的Agent Runtime Sandbox后端服务实现方案。架构设计:参考E2B的分层架构,实现API层、管理层和虚拟化层Firecracker集成:深度集成Firecracker提供硬件级安全隔离完整功能:支持文件读写、shell执行、浏览器访问等核心功能生产就绪:提供Docker部署、监控、测试和安全配置可扩展性:设计支持水平扩展和高并发场景。

AI天才研究院 751

tcp协议和udp协议的使用场景

一:什么是TCP(Transmission Control Protocol,传输控制协议) tcp是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就...

leikun153的博客 1万+

FreeRTOS全攻略:从入门到精通

本文聚焦 FreeRTOS,从基础概念出发,阐述其开源、轻量级等优势。着重介绍 FreeRTOS 入门知识,涵盖内存管理、任务操作、同步互斥机制等核心内容。其中,空闲任务与钩子函数保障系统基础运行与功能扩展;队列、信号量、互斥锁和事件组等机制,分别从数据传递、资源访问控制、优先级问题解决及多任务同步等方面,为开发者提供高效的任务间协作与资源管理方案,助力开发者掌握 FreeRTOS 核心技术,为嵌入式项目开发筑牢基础。

邓邓子的博客 6360

TCP和UDP的区别

TCP TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。 UDP UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。 ...

想握住此生辽阔 3万+

LVGL 9Text Area 控件 (lv_textarea) 使用指南

是一个可编辑的文本输入控件,通常用于在用户界面中输入和编辑多行或单行文本。该控件支持文本插入、删除、光标控制、文本选择、密码输入等功能。它的文本内容可以通过键盘、API 或事件进行修改,还可以设置最大文本长度、占位符文本和密码模式等。是一个强大且灵活的文本输入控件,适用于多种用户输入场景,支持文本插入、删除、光标控制、密码输入等功能。通过 LittlevGL 提供的丰富 API,开发者可以自定义文本区域的外观和行为,实现复杂的文本输入需求。

m0_62599305的博客 1677

SAP AI Core 高阶能力实战参考

文章摘要:本文探讨了在企业SAP架构中整合GenAI技术的工程化实践,重点分析了SAP AI Core的高阶能力应用。作者指出,企业级AI应用需解决多轮对话管理、Git同步工作流、提示词治理等核心问题,而非简单接入大模型API。技术方案展示了如何通过SAP AI Core的orchestration service管理对话历史,利用GitOps实现AI资产版本控制,并强调prompt template在审计合规中的治理价值。全文以SAP技术栈(ABAP/RAP/Fiori)为背景,阐释了AI能力与企业核心系

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 106

简单应用UDP模拟TCP的项目实现

简单应用UDP模拟TCP项目

weixin_73522270的博客 2490

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TCP和UDP区别详解

文章目录OSI和TCP/IP模型 OSI和TCP/IP模型 OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 HTTP、TFTP, FTP, NFS, WAIS、SMTP 表示层(Presentation) Telnet, Rlogin, SNMP, Gopher 会话层(Session) SMTP, DNS 传输层(Transport) 传输层 TCP, UDP 网络层(Network) 网络层 IP, ICMP, A

wyplj2015的博客 3304

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UDP协议和TCP协议

是一种无连接的、简单的传输层通信协议,它在IP协议(网络层)之上提供服务。

jiaking_two的博客 2092

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

详解 TCP 和 UDP

本篇文章转载自公众号:网络技术平台 https://mp.weixin.qq.com/s/8iyxF1tT3JhyHKdyeF1uAg 目录 一、概述 二、初始传输层 2.1 TCP 2.2 UDP 2.3 TCP 和 UDP 的区别 三、端口号 3.1 标准端口号 3.2时序分配法 四、UDP 五、TCP 5.1 TCP特点 5.2 连接 5.3 序列号和确认应答 5.4 超时重发 5.5 连接管理 5.6 三次握手 5.7 四次挥手 5.8 单位段 5.9 ..

qq_41687938的博客 3897

TCP和UDP的简单对比

TCP和UDP是计算机网络运输层中的两个重要协议,本文对其特点进行简单对比。

Nimrod__的博客 1411

TCP 和 UDP的区别

TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是互联网中两种最常用的传输层协议总的来说,TCP适用于对数据可靠性要求高的场景,而UDP适用于实时传输和对可靠性要求较低的场景。在实际应用中,根据具体需求选择合适的传输协议非常重要。

刘皇叔说Java的博客 3594

TCP和UDP 总结

TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Client 4.对数据安全性无特殊要求 5...

在此立一个IT职业上的flag:https://github.com/Zeb-D/my-review 1万+

TCP和UDP

在TCP/IP协议簇中有两个传输协议:传输控制协议(Transmission Control Protocol, TCP) 和用户数据报协议(User Datagram Protocol, UDP)。TCP是面向连接的,而UDP是无连接的。 本节详细讨论TCP协议的控制机制,并简要介绍UDP协议的特点。 目录 1.TCP服务 2.TCP段头格式 3.用户数据报协议 1.TCP服务 TCP协议提供面向连接的可靠的传输服务,适用于各种可靠的或不可靠的网络。TC...

商务合作|种草文章|产品测评 2693
上一篇: MVC减少编程复杂性
下一篇: Stryon产品方案介绍
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值