#include <sys/socket.h> int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen) sockfd : socket 関数が返したソケットディスクリプタ servaddr : ソケットアドレス構造体へのポインタ(サーバの IP アドレスとポート 番号が含むまれている必要がある) addrlen : ソケットアドレス構造体の大きさ
参考1: ソケットアドレス構造体
struct sockaddr { uint8_t sa_len; sa_family_t sa_family; // アドレスファミリ( AF_*** ) char sa_data[14]; // プロトコル依存 };
#include <netinet/in.h> struct in_addr { in_addr_t s_addr; // 32 ビットの IPv4 アドレス // ネットワークバイト順序 }; struct sockaddr_in { uint8_t sin_len; // 構造体の大きさ( 16 バイト) sa_family_t sin_family; // AF_INET in_port_t sin_port; // 16 ビットのポート番号 // ネットワークバイト順序 struct in_addr sin_addr; // 32 ビット IPv4 アドレス // ネットワークバイト順序 char sin_zero[8]; // 未使用 };
#include <netinet/in.h> #define SIN6_LEN struct in6_addr { uint8_t s6_addr[16]; // 128 ビットの IPv6 アドレス // ネットワークバイト順序 }; struct sockaddr_in6 { uint8_t sin6_len; // 構造体の大きさ( 24 バイト) sa_family_t sin6_family; // AF_INET6 in_port_t sin6_port; // トランスポート層ポート番号 // ネットワークバイト順序 uint32_t sin6_flowinfo; // 優先度フローラベル // ネットワークバイト順序 struct in6_addr sin6_addr; // IPv6 アドレス // ネットワークバイト順序 };
データ型 | 説明 | ヘッダ |
---|---|---|
int8_t | 8 ビット符号付き整数 | <sys.types.h> |
uint8_t | 8 ビット符号なし整数 | <sys.types.h> |
int16_t | 16 ビット符号付き整数 | <sys.types.h> |
uint16_t | 16 ビット符号なし整数 | <sys.types.h> |
int32_t | 32 ビット符号付き整数 | <sys.types.h> |
uint32_t | 32 ビット符号なし整数 | <sys.types.h> |
sa_family_t | ソケットアドレス構造体のアドレスファミリ | <sys.socket.h> |
socklen_t | ソケットアドレス構造体の大きさ( uint32_t ) | <sys.socket.h> |
in_addr_t | IPv4 アドレス( uint32_t ) | <netinet.in.h> |
in_port_t | TCP あるいは UDP のポート番号( uint16_t ) | <netinet.in.h> |
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |