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!!