❤️强烈推荐人工智能学习网站❤️

accept函数和TCP三次握手有没有关系?有什么关系?一段代码让你从此不在疑惑。

服务端:

#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>int main()
{int sockSrv = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in addrSrv;addrSrv.sin_family = AF_INET;addrSrv.sin_addr.s_addr =htonl(INADDR_ANY);addrSrv.sin_port = htons(8888);bind(sockSrv, (const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in));listen(sockSrv, 5);sockaddr_in addrClient;socklen_t len=sizeof(addrClient);getchar();int sockConn = accept(sockSrv, (struct sockaddr *)&addrClient, &len);printf("accept success\n");close(sockConn);close(sockSrv);return 0;
}

客户端:

#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>
#include <error.h>int main()
{int ret=0;int sockClient = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in addrSrv;addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(8888);ret=connect(sockClient, ( const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in));getchar();close(sockClient);return 0;
}

在服务端代码中,我们在accept函数前面实用getchar()函数,使其不调用accept函数。编译并运行,然后用tcpdump抓包。

[root@localhost mapan]# tcpdump -iany port 8888 -nlps0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
14:55:03.808416 IP 127.0.0.1.39920 > 127.0.0.1.ddi-tcp-1: Flags [S], seq 3756544861, win 65495, options [mss 65495,sackOK,TS val 2960369517 ecr 0,nop,wscale 7], length 0
14:55:03.808434 IP 127.0.0.1.ddi-tcp-1 > 127.0.0.1.39920: Flags [S.], seq 2739095114, ack 3756544862, win 65483, options [mss 65495,sackOK,TS val 2960369517 ecr 2960369517,nop,wscale 7], length 0
14:55:03.808451 IP 127.0.0.1.39920 > 127.0.0.1.ddi-tcp-1: Flags [.], ack 1, win 512, options [nop,nop,TS val 2960369517 ecr 2960369517], length 0

通过抓包的结果可以看出,三次握手已经完成,和accept函数没有啥关系。通过netstat命令也可以看到服务端和客户端都已经是ESTABLISHED

accept函数与TCP三次握手相关推荐

  1. 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

    来自:小林coding 每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 T ...

  2. 握手失败_拜托了,看完这篇别再问我什么是TCP三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 三次握手如何建立连接? 三次握手建立链接 从图中可以清楚的看到, ...

  3. 面试官,求你了别再问我TCP三次握手和四次挥手了(含面试题)

    少点代码,多点头发 三次握手建立链接,四次挥手断开链接.这个问题算非常经典的问题,也是面试官非常喜欢问的问题. 不夸张的说,龙叔在校招面试的时候每一家公司都问到过关于三次握手和四次挥手相关的问题,相信 ...

  4. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理

    接着上一篇文章叙述: TCP/IP连接(在互联网的通信中,永远是客户端主动连接到服务端): 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协 ...

  5. 图解TCP三次握手和四次挥手!(简单易懂)

    哈喽:亲爱的小伙伴,首先祝大家五一快乐~ 本来打算节日 happy 一下就不发文了,但想到有些小伙伴可能因为疫情的原因没出去玩,或者劳逸结合偶尔刷刷公众号,所以今天就诈尸更新一篇干货,给大家解解闷~ ...

  6. [转】TCP 三次握手 四次挥手

    [转]http://blog.csdn.net/wenqian1991/article/details/40110703 传输控制协议(TCP)是一种面向连接的协议,网络程序使用这个协议的时候,网络可 ...

  7. 40张图全面解析TCP 三次握手和四次挥手

    每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 哪种语言的开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. ...

  8. [计算机网络] - TCP三次握手和四次挥手

    转载自:https://blog.csdn.net/qq_34827674/article/details/105331617 1.TCP基本认识 TCP头部格式: ​​​​ 序列号:在建立连接时由计 ...

  9. 吊打面试官!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

    作者 | 小林coding 来源 | 小林coding(ID:CodingLin) 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我 ...

最新文章

  1. git克隆 不带目录_Git 系统学习笔记
  2. R语言cut函数实现数据分箱及因子化实战
  3. Maltego发布新版本4.2.18
  4. python读取excel一列-python读取excel(xlrd)
  5. [概统]本科二年级 概率论与数理统计 第八讲 大数定律与中心极限定理
  6. python语言中内置的字符串排版方法_Python14之字符串(各种奇葩的内置方法)
  7. Pyalgotrade量化交易回测框架
  8. Redis 与 zset(sorted set有序集合) 相关的常用命令
  9. 多线程编程之两阶段终止模式
  10. CLion设置背景图片(Pycharm等)
  11. SQL学习笔记四之MySQL数据操作
  12. 修复windows系统快捷方式图标变成白色的问题
  13. 企业可以自己开发一套CRM系统吗?
  14. 其他综合-fdisk一键分区操作-无需脚本
  15. 搜狗拼音输入法居然输入不了半角的人民币符号¥¥¥¥¥¥¥¥!!!
  16. 检验两个随机序列的beta系数
  17. 超好用的mac虚拟机软件:VM虚拟机 mac中文版
  18. Android控件——TextView与EditText
  19. 计算机安全模式怎么消除计,win10如何解除安全模式,教您如何解除电脑安全模式...
  20. 1919: 三个整数排序(指针专题)

热门文章

  1. centos 7下独立的python 2.7环境安装
  2. WPF-MVVM学习心德(WinForm转WPF心德)
  3. Hadoop–Task 相关
  4. JBOSS优化--比较有用的生产环境配置
  5. 类WebOS(添加了主界面,及相关功能代码)
  6. WCF扩展:行为扩展Behavior Extension一
  7. 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)
  8. Python面试必知(四)
  9. “从A到I”智慧数据中心上海论坛
  10. 22.6. 视图(View)