
socket
C语言这么神奇的吗
就是一个瓜皮
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下Socket简单通信
socket是计算机之间通信的一种约定和方式,通过这种方式和约定,计算机可以与相同约定的计算机进行数据传输。c/s模式 服务端socket 1.创建套接字:int socket(int af,int type,int protocol);1)参数af: IP地址类型 AF_INET (ipv4),AF_INET6 (ipv6); 2)参数type: 数据传输方式 SOCK_STREA原创 2017-09-14 10:51:16 · 323 阅读 · 0 评论 -
TCP套接字--阻塞模式和粘包问题
阻塞模式对于TCP套接字(默认情况下),当使用 write()/send() 发送数据时:1) 首先会检查缓冲区,如果缓冲区的可用空间长度小于要发送的数据,那么 write()/send() 会被阻塞(暂停执行),直到缓冲区中的数据被发送到目标机器,腾出足够的空间,才唤醒 write()/send() 函数继续写入数据。2) 如果TCP协议正在向网络发送数据,那么输出缓冲区会被锁定转载 2017-09-14 20:20:39 · 1512 阅读 · 0 评论 -
TCP连接三次握手
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手(Three-转载 2017-09-15 08:42:24 · 768 阅读 · 2 评论 -
TCP数据传输过程
建立连接后,两台主机就可以相互传输数据了。如下图所示:图1:TCP 套接字的数据交换过程上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程。首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 1200。主机B为了确认这一点,向主机A发送 ACK 包,并将 Ack 号设置为 1301。为了保证数据准确到达,目标机器在收到数据包(包转载 2017-09-15 09:15:00 · 7105 阅读 · 2 评论 -
TCP四次握手断开连接
建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。建立连接需要三次握手,断开连接需要四次握手,可以形象的比喻为下面的对话:[Shake 1] 套接字A:“任务处理完毕,我希望断开连接。”[Shake 2] 套接字B:“哦,是吗?请转载 2017-09-15 09:47:09 · 413 阅读 · 0 评论 -
socket--shutdown()函数
调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。图1:close()/closesocket() 断开连接上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用 close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,转载 2017-09-15 14:09:38 · 10101 阅读 · 1 评论 -
并发服务器--I/O复用之select
之前简单介绍了多进程实现并发服务器的方法,多进程方法弊端不言而喻,用户的增多对于服务器资源有巨大压力。下面介绍并发服务器的另一种实现方法(只介绍基本思路)I/O复用select函数select函数使用方法步骤1. 设置文件描述符 指定监视范围 设置超时步骤2. 调用select函数步骤3. 查看调用结果设置文件描述符利用select函数可以同时监视多个文件描述符...原创 2018-03-02 15:35:23 · 913 阅读 · 0 评论