// INET で STREAM な TCPソケットによる通信プログラムの雛型 (サーバー側)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "integnet.h"

// 接続のポート
#define PORT 12345

int main( void )
{
  // INET で STREAM なソケットの作成
  int sb = socket( AF_INET, SOCK_STREAM, 0 );

  // 接続の目印の指定
  sockaddr_in addr = SOCKADDR_IN_INIT( AF_INET, htons(PORT), InAddr(htonl(INADDR_ANY)) );

  // 目印の公開
  if( bind( sb, (sockaddr*)&addr, sizeof(addr) ) < 0 ){
    perror("bind");
    exit(1);
  }

  // 接続要求の受信開始(同時に1回線まで接続可とする)
  listen( sb, 1 );

  // 接続要求の受信
  int s = accept( sb, NULL, NULL );

  // データの受信
  char msg[64];
  int len;
  len = recv( s, msg, sizeof(msg), 0 );
  msg[len] = '\0';

  // データの表示
  printf("Server received : %s\n", msg );

  // ソケットの廃止
  close(s);
  close(sb);

  return 0;
}