云风的BLOG❳可靠 UDP 传输】的更多相关文章

http://mp.weixin.qq.com/s?__biz=MzA3NjYxOTA0MQ==&mid=405432715&idx=1&sn=2e40ceafd4b298e19971a7703daf5c22&scene=0#wechat_redirect…
今天实现了一个 C 用的 coroutine 库. 我相信这个东西已经被无数 C 程序员实现过了, 但是通过 google 找了许多, 或是接口不让我满意, 或是过于重量. 在 Windows 下, 我们可以通过 fiber 来实现 coroutine , 在 posix 下, 有更简单的选择就是 setcontext . 我的需求是这样的: 首先我需要一个 asymmetric coroutine .如果你用过 lua 的 coroutine 就明白我指的是什么. 其次,我不希望使用 coro…
tcp为我们做了什么事情? 总得来说,tcp做了这几件事: 通过序列号和基于确认的超时重传机制,为上层提供了可靠的字节流服务: 通过滑动窗口.拥塞窗口提供了流量控制: 默认情况下,为了有效利用带宽,tcp的报文一次会尽量携带更多的数据.但与此同时,为了避免IP层的分片,又不会发送超过MTU大小的数据包. udp为我们做了什么事情? 首先应该清楚的是,一个udp数据包仅仅是在IP数据包之上加了一个udp协议头.这个协议头十分精简,仅有的四个字段是:目的端口号.源端口号.数据包长度.校验和.通过se…
WeTest 导读 云真机已经支持手机端的画面投影.云真机实时操作,对延迟的要求比远程视频对话的要求更高(100ms以内).在无线网络下,如何更实时.更可靠的传输视频流就成了一个挑战.通过websocket.RTMP.UDP的比较,最后选择了可靠的UDP协议KCP来进行实时音视频的传输. 1 简介 KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果.纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定…
转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯. skynet一般用于开发游戏服务端程序. 注意:资料开始往github组织账号skynetclub上转移,本页面不在进行更新主要收集学习skynet有关的任何内容,如果你有好的资料或者你在研究skynet,可以将资料或链接地址发给…
本例主要介绍 如何将 pbc 集成到quick-cocos2dx框架中,让我们的cocos2dx客户端Lua拥有编解码Protocol Buffers能力. 参考: 云风pbc的用法: http://www.cnblogs.com/ghost240/archive/2013/08/12/3253092.html 本例使用的项目位置: https://github.com/miaodadao/pbc  框架Quick-cocos2dx官网:http://cn.quick-x.com/ pb文件生成…
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP…
两种协议都是传输层协议,为应用层提供信息载体. TCP协议是基于连接的字节流的可靠协议,有三次握手,四次挥手,超时重传,流量控制(滑动窗口),拥塞控制和差错控制,也正因为有可靠性的保证和控制手段,所以传输效率比UDP低: UDP协议是基于无连接的数据报的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高.   UDP 编程比 TCP 难,使用UPD场景 1.低延时 2.音视频为何不用UDP 3.NAT穿透 4.一般都使用TCP 基于上述特性,不难得到结论,TCP协议适用于对效…
目录结构: contents structure [-] 1 TCP协议和UDP协议的比较 1.1 TCP协议 TCP的全称是Transmission Control Protocol (传输控制协议) 1.2 UDP协议 UDP是User Datagram Protocol(用户数据报协议) 2 基于TCP的网络编程模型 2.1 使用Java代码实现TCP 服务端: 客户端: 2.2 使用C#代码实现TCP 服务端: 客户端: 3 基于UDP的网络编程模型 3.1 使用Java代码实现UDP…
TCP和UDP在网络传输中非常重要,在Android开发中同样重要. 首先我们来看一下什么是TCP和UDP. 什么是TCP? TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified).在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能.应用层向TCP层发送用于网间传输的.用8位字节表示的数据流,然后TCP…
最近加入了一个用帧同步的项目,帧同步方案对网络有着极大的影响,于是采用了RUDP(可靠UDP),那么为什么要摒弃TCP,而费尽心思去采用UDP呢?要搞明白这个问题,首先要了解TCP和UDP的区别 , 明白TCP无法避免的痛点. TCP VS UDP 1.Tcp 面向连接,提供可靠的传输: UDP面向无连接,提供不可靠传输 2. Tcp 提供流量控制 : UDP不提供流量控制 3. Tcp 保证传输数据顺序 : UDP不保证传输顺序,也就是可能是乱序收包 4. TCP 面向字节流 : UDP 面向…
开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等 C++开发网络通信程序时用asio是个不错的选择,但asio本身是一套函数集,自己还要处理诸如“通信线程池管理.连接及生命周期管理.多线程收发数据的同步保护等”.因此这里对asio进行了一层封装,大大简化了对asio的使用.代码使用了C++17相关功能,所以只能用在C++17以上. 其中http和websocket部分用的是boost::beas…
前言 前段时间研读云风的coroutine库,为了加深印象,做个简单的笔记.不愧是大神,云风只用200行的C代码就实现了一个最简单的协程,代码风格精简,非常适合用来理解协程和用来提升编码能力. 协程简介 协程是用同步的写法达到异步的性能.其基本原理是在IO等待时切换出去,在适当的时刻切换回来,最大程度利用CPU.协程可以理解为一个用户级的线程,一个线程里跑多个协程.并且,不管协程数量多少,都是串行运行的,就是说不存在同一时刻属于一个线程的不同协程同时运行.因此避免了多线程编程可能导致的同步问题.…
AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器,或者接收其他设备传输过来的数据并进行处理. 接触过以太网的用户,应该最常听说的是TCP/IP协议,确实,在PC端或者嵌入式系统中,TCP/IP协议应用非常广泛,因此,当大家看到FPGA上带有以太网接口时,可能第一个想到的也是实现TC/IP协议.这里,首先可以很肯定的告诉大家,使用FPGA实现TCP…
AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器,或者接收其他设备传输过来的数据并进行处理. 接触过以太网的用户,应该最常听说的是TCP/IP协议,确实,在PC端或者嵌入式系统中,TCP/IP协议应用非常广泛,因此,当大家看到FPGA上带有以太网接口时,可能第一个想到的也是实现TC/IP协议.这里,首先可以很肯定的告诉大家,使用FPGA实现TCP…
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux…
前言 从明天起 关心粮食和蔬菜 我有一所房子 面朝大海 春暖花开 本文前提条件 1.了解 posix 线程 2.了解 原子操作 3.具备简单C基础,或者 你也敲一遍. 如果上面不太清楚,你可以翻看我以前的博客,或者'百度'搜索. 结论 1.云风前辈的 玩具 cstring 有点坑, 内存管理很随意(也可能时我菜,理解不了他飘逸的写法) 2.对于江湖中成名已久的 高手, 其实 胜在 思路上. 3.前辈3-4h搞完的,重构了1周, 发现 const char* 和 char* 够用了,真的,越简单越…
这两天下了一个使用UDP传输目录内文件的程序,发出来给大家一起看看,共同进步.有问题请指教. 由于udp丢包比较厉害,因此使用了自定义的内部协议,进行双方的确认. 程序跑起来后,看网络状况,有时候会一卡一卡的. 源程序下载见:http://download.csdn.net/detail/hardstone1/6039033,需要2积分,呵呵,赚点小分 以下是程序说明: * 本程序集成了数据导出端(服务器端)和数据导入端(客户端),使用UDP进行文件传递 * 服务器端的文件来源目录,见Tools…
源:UDP传输包大小 在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助: 首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层. UDP属于运输层,下面我们由下至上一步一步来看: 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物…
1.为什么需要动态库 a)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. b)某些开源库是c/cpp编写,没有对应c#版本 c)或者有c#版本实现,但是效率或者gc达不到期望效果,特别是GC,一般的开源库c#版本的作者,对gc优化得大多不好 d)追求效率,比如A*寻路等开销比较大的算法,想做下优化 e)某些模块,如网络模块,需要Unity客户端和后端跑一份相同的逻辑代码,而不想…
不谈理论,先举简单例子. 发送端代码: public class UDPDemo { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(); String str = "hello"; DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.g…
需求:通过Udp传输方式,将一段文字数据发送出去 定义一个Udp发送端 思路: 1.建立updsocket服务 2.提供数据,并将数据封装到数据包中. 3.通过socket服务的发送功能,将数据包发出去 4.关闭资源. import java.net.*; class UdpSend { public static void main(String[] args) throws Exception { //1.创建udp服务,通过DatagramSocket对象 DatagramSocket d…
1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.* B:网络编程 * 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 2.网络编程三要素之IP概述 * 每个设备在网络中的唯一标识* 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址. * ipconfig:查看本机IP192.168.1…
今天解决了一个困扰好几天的问题,由于比赛需要,需要用java语言,并采用UDP传输协议,让树莓派与服务器(就是本机)建立连接传输视频,图片. 由于UDP是建立在无连接的协议上,因此就碰到了一个很尴尬的问题,就是客户端一直发送,但是在本地服务器就是接收不到数据,最恶心的是根本不报错,所以根本不知道错在了哪.在讲过查阅资料后,终于解决了该问题, 1.首先,要先将树莓派和本地服务器的防火墙都关掉. 2.其次就是代码中的一些参数需要注意,具体代码如下: package UDPTest; import j…
Server.java package com.sxt.udp.object; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import com.sx…
①:只要是网络传输,必须有socket . ②:数据一定要封装到数据包中,数据包中包括目的地址.端口.数据等信息. 直接操作udp不可能,对于java语言应该将udp封装成对象,易于我们的使用,这个对象就是DatagramSocket. 封装了udp传输协议的socket对象. 因为数据包中包含的信息较多,为了操作这些信息方便,也一样会将其封装成对象.这个数据包对象就是:DatagramPacket.通过这个对象中的方法,就可以获取到数据包中的各种信息. DatagramSocket具备发送和接…
网路传输主要的两大协议为TCP/IP协议和UDP协议,本文主要介绍基于UDP传输的一个小软件分享,针对于Java网络初学者是一个很好的练笔,大家可以参考进行相关的联系,但愿能够帮助到大家. 话不多说,直接上代码结构图: FindThread类是为了创建接收服务线程,GetLocalHostAddress类是为了获取本地IP地址,作为远程传输的目标地址,GetLocalTime是为了获取本地时间,为主界面提示信息建立时间戳,GetRandomNumber是为了方便创建端口号的,端口号正常范围是0到…
TCP和UDP在网络传输中非常重要,在Android开发中同样重要. 首先来看一下什么是TCP和UDP. 什么是TCP? TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified).在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能.应用层向TCP层发送用于网间传输的.用8位字节表示的数据流,然后TCP把数…
KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果.纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP.连时钟都需要外部传递进来,内部不会有任何一次系统调用. 整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到用户自己的协议栈中.也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的ARQ可靠协议实现,…
TCP提供一种面向连接的.可靠的字节流服务.面向连接意味着两个使用TCP的应用(一般是一个客户和一个server)在彼此交换数据包之前必须先建立一个TCP连接.这一过程与打电话非常相似.先拨号振铃,等待对方摘机说"喂".然后才说明是谁.在一个TCP连接中.仅有双方进行彼此通信. 广播和多播不能用于TCP. TCP通过下列方式来提供可靠性: 1.面向字节流和缓存机制:应用数据被切割成TCP觉得最适合发送的数据块.这和UDP全然不同,应用程序产生的数据长度将保持不变.由TCP传递给IP的信…