学习网络编程最主要的是能理解底层编程细节,一开始看《UNIX网络编程卷1:套接字联网API》的时候搞不懂什么seq、ack到底是什么东西,最近了解了tcpdump的一些用法后感觉两者结合起来还是比较容易理握手过程的。以下就通过tcpdump工具来监控相关内容,并和书本上的流程进行对比介绍,希望对入门的童靴有些帮助吧
服务端代码如下:
#include <sys/socket.h> //socket listen bind
#include <arpa/inet.h> // sockaddr head
#include <string.h> //memset and strlen head
#include <sys/socket.h> //socket listen bind
#include <iostream>
#include <time.h>
#include <stdio.h>
#define MAXLINE 4096
#define LISTENQ 1024
using namespace std;
int main(int argc, char ** argv)
{
int listenfd, connfd;
socklen_t len;
struct sockaddr_in servaddr, cliaddr;
char buff[MAXLINE];
time_t ticks;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(10000);
bind(listenfd, (struct