HTTP Client の動作フロー その5 : connect() でサーバに接続する [2]

connect()の実例

127.0.0.1(localhost)の80番ポートに接続する。

//connect_test.c

#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>

int main(void)
{

	int sockfd;
	struct sockaddr_in sockaddr;
	char *addr_str = "127.0.0.1"; 

	//ソケットの生成
	sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if (sockfd == -1) {
		printf("socket err\n");
		return 1;
	}

	//addrの初期化
	int result = inet_pton(AF_INET, addr_str, &sockaddr.sin_addr);
	if (result != 1) {
		printf("inet_pton err");
		return 1;
	}


	//sockaddrの初期化
	sockaddr.sin_family = AF_INET;
	sockaddr.sin_port = htons(80); //80番ポート

	//connect
	result = connect(sockfd, (struct sockaddr*) &sockaddr, sizeof(sockaddr));
	if (result == -1) {
		printf("connect err");
		return 1;
	}

	//30秒後に切断
	sleep(30);	
	close(sockfd);

	return 0;
}

実行

$ ./connect_test & netstat -anptl |grep 127.0.0.1:80 
[1] 2222
(一部のプロセスが識別されますが, 所有していないプロセスの情報は
表示されません。それら全てを見るにはルートになる必要があります.)
tcp        0      0 127.0.0.1:80            127.0.0.1:43796         SYN_RECV    -               
tcp        0      0 127.0.0.1:43796         127.0.0.1:80            ESTABLISHED 2222/connect_test      

ESTABLISHED!!