
socket
bravegogo
知行合一,积学养气
展开
-
socket 的通信过程
下图是基于TCP协议的客户端/服务器程序的一般流程:服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从ac转载 2016-03-01 22:51:54 · 346 阅读 · 0 评论 -
TCP拥塞控制
1,拥塞窗口 cwnd 控制发送包的个数。2,接收端窗口rwnd 控制接收端包个数。3,慢开始 ssthresh 由于需要考虑拥塞控制和流量控制两个方面的内容,发送端的发送窗口为min(cwnd,rwnd),但是rwnd是由对端确定的,网络环境对其没有影响,所以在考虑拥塞的时候我们一般不考虑rwnd的值,我们暂时只讨论如何确定cwnd值的大小。原创 2016-04-10 21:16:19 · 359 阅读 · 0 评论 -
IPv4和IPv6
转 :http://blog.youkuaiyun.com/zhengzhoudaxue2/article/details/6371555对于IPv4和IPv6,我们可以分为IPv4和IPv6的客户端和服务器,下面我们来分别讨论一下对于不同的服务器我们怎么建立这个连接, 第一:IPv4/IPv6客户和IPv4/IPv6服务器这个情况很明了,也是现在大部分服务器和转载 2016-05-30 19:05:38 · 1520 阅读 · 0 评论 -
C++ IPv4与IPv6的兼容编码
struct addrinfo hints, *res, *ressave; bzero(&hints, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_IP;原创 2016-05-30 18:47:24 · 3316 阅读 · 0 评论 -
心跳包机制
心跳包机制 跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出转载 2016-04-24 21:06:29 · 1369 阅读 · 0 评论 -
TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序。如果你能完全理解这3个例子,估计socket编程就已经基本入门了。 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询;3) 可以直接使用书上的例子更好。转载 2016-06-02 22:45:21 · 770 阅读 · 0 评论 -
asio socket设置 server地址与端口的两种方式
1. 用解释器的方法, 常用来解析域名, 如 // query("www.163.com","80"), 也可以 query("www.163.com","telnet")// echo 7/tcp// ftp 21/tcp # File Transfer Protocol (Control)//原创 2016-03-01 16:36:13 · 2316 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select、poll、epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的转载 2016-02-15 14:51:25 · 316 阅读 · 0 评论 -
socket 阻塞与非阻塞 分析
目录做笔记 1非阻塞IO 和阻塞IO: 11 基本概念: 21.1 阻塞IO:: 21.2 非阻塞IO:: 22 IO模式设置: 22.1 SOCKET 22.3实现 22.4读 32.5 写 53 具体函数返回值分析 63.1recv转载 2017-05-03 19:05:51 · 405 阅读 · 0 评论 -
Swift Socket 实例 两份资料不错
Swift - 使用vapor socks库进行socket通信(基于TCP、UDP协议)http://www.hangge.com/blog/cache/detail_1588.htmlSwift - 使用socket进行通信(附聊天室样例)http://www.hangge.com/blog/cache/detail_756.html...原创 2018-06-07 11:50:22 · 2148 阅读 · 0 评论 -
TCP窗口控制的作用
1,提高发包吞吐量: 确认应答不再是以每个片段,而是以更大的单位(窗口大小)进行确认,转发时间就被大幅度的缩短。至于窗口的大小是由接收端主机决定的,也方便进行流控制。2,减少丢包: 允许发送方在收到ACK之前连续发送多个分组。使用了窗口控制,某些确认应答即便丢失也无需重发。可以根据自己的确认应答或者下一个确认应答来确认。 当一个报文丢失时原创 2016-04-10 20:36:46 · 2754 阅读 · 0 评论 -
LinuxIO模型概述
转自:http://www.firefoxbug.com/index.php/archives/2694/前言一个socket进程进行一次read可以分成两个阶段,等待数据是否准备好,以及数据从内核copy到用户空间。 我们举个例子,肚子饿了要去小吃街吃拉面,在我们正式开始吃面之前需要1.先等拉面师傅做好面,2.然后把做好的面放到我们的桌子上。阻塞和非阻塞转载 2016-03-20 21:56:45 · 336 阅读 · 0 评论 -
socket编程之select()
socket编程之select() Select在Socket编程中还是比较重要的,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。 Select的函数格式(Unix系统下的伯克利socket编程,和windows下的略有区别,体现两个方面:一是select函数的第一个参数,在windows下可以忽略,但在linux下必须设为最大文件描述符加1;二是结构fd_s转载 2016-02-15 15:41:25 · 285 阅读 · 0 评论 -
Linux中TCP连接过程状态简介
Linux中TCP连接过程状态简介一、Linux服务器上11种网络连接状态: 图:TCP的状态机通常情况下,一个正常的TCP连接,都会有三个阶段:1、TCP三次握手; 2、数据传送; 3、TCP四次挥手注:以下说明最好能结合”图:TCP的状态机”来理解。SYN: (同步序列编号,Synchronize Sequence Numb转载 2016-02-15 15:43:50 · 380 阅读 · 0 评论 -
send函数 & recv函数
send函数工作原理: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据; 如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中原创 2016-02-15 15:48:29 · 355 阅读 · 0 评论 -
心跳包机制
心跳包机制 跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线转载 2016-02-15 15:53:56 · 618 阅读 · 0 评论 -
socket 中 fcntl(),select()的介绍
一、fcntl()函数有如下特性:1)非阻塞I/O: 可将cmd 设为F_SETFL,将lock设为O_NONBLOCK#include #include #include #include #include #include #include #include #include #include #include #include原创 2016-02-16 10:53:02 · 671 阅读 · 0 评论 -
对比iOS网络组件:AFNetworking VS ASIHTTPRequest
在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题。一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性。这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等。那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?转载 2016-02-16 16:26:06 · 362 阅读 · 0 评论 -
Mac&iOS Socket编程
转自 https://github.com/kejinlu/objc-doc/blob/master/Socket%E7%BC%96%E7%A8%8B.md大纲一.Socket简介二.BSD Socket编程准备1.地址2.端口3.网络字节序4.半相关与全相关5.网络编程模型三.socket接口编程示例四.使用select五.使用kqueue六.使用流注转载 2016-03-20 20:32:25 · 923 阅读 · 0 评论 -
socket 的通信 视频链接
http://edu.youkuaiyun.com/course/detail/1388转载 2016-03-20 21:46:49 · 854 阅读 · 0 评论 -
Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什转载 2016-03-20 21:54:49 · 973 阅读 · 0 评论 -
iOS NSMachPort 线程与进程间的通信
原创:http://blog.youkuaiyun.com/yxh265/article/details/51483822iOS线程间的通信iOS中,两个线程之间要想互相通信,可以使用:NSMachPort 下面是例子#define kMsg1 100#define kMsg2 101- (void)viewDidLoad { [super viewDidLoad]; ...转载 2018-07-25 11:20:22 · 2163 阅读 · 0 评论