最近在看TCP相關的書籍,寫了個程序實現TCP的鏈接和建立,並抓包分析三次握手和四次揮手的過程。
程序代碼如下:
#include <windows.h>
#include "stdio.h"
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
WORD sockVersion = MAKEWORD(2, 2);//版本號
WSADATA data; //用來保存WSAStartup調用後返回的windows Sockets數據
if (WSAStartup(sockVersion, &data) != 0)
{
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(443); //服務端端口
serAddr.sin_addr.S_un.S_addr = inet_addr("10.19.166.150"); //服務端地址
{
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sclient == INVALID_SOCKET)
{
printf("invalid socket !");
return 0;
}
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("connect error !");
closesocket(sclient);
return 0;
}
closesocket(sclient);
}
WSACleanup();
return 0;
}
抓到的包如下: