[TCP/IP] ソケット

TCPまたUDPで通信を行うにはソケットの作成をOSに依頼する必要がある。プログラムの必要に応じてソケットタイプを指定
int socket(int protocolFamily, int type, int protocol)
アプリケーションでソケットを終了させるにはclose()を使用する
int close(int socket)

ソケットAPIにはsockaddrという汎用のデータ型が定義されている
struct sockadddr {
unsigned short sa_family; // アドレスファミリ
char sa_data[14]; // アドレス情報
}

sockaddr構造体をTCP/IPのソケットアドレスに特化したのがsockaddr_in構造体
struct in_addr {
unsigned long s_addr; // IP address
}

struct sockaddr_in {
unsigned short sin_family; // TCP/IP
unsigned short sin_port; // address port
struct in_addr sin_addr; // ip address
char sin_zero[8];
}

### TCP接続
1. socket()を実行してTCPソケットを作成
2. connect()を実行してサーバへの接続を確立
 int connect(int socket, struct socketaddr *foreignAddress, unsigned int addressLength)
3. send()とrecv()を実行して通信を行う
int send(int socket, const void *msg, unsigned int msgLength, int flags)
int recv(int socket, void *rcvBuffer, unsigned int bufferLength, int flags)
4. closeを実行して接続クローズ