createSocket

이 메소드는 새 소켓을 작성합니다.

시그니처
int RiCOSSocket_createSocket (RiCOSSocket * const me,
   const char *SocketAddress, unsigned int nSocketPort);
매개변수
me

RiCOSSocket 오브젝트입니다.

SocketAddress

소켓 주소입니다. 소켓 주소는 문자열 호스트 이름으로 설정할 수 있습니다. 기본값은 널입니다.

nSocketPort

소켓 포트 번호입니다. 기본값은 0입니다.

리턴값

소켓 작성 상태입니다. 가능한 값은 다음과 같습니다.

예제
int RiCOSSocket_createSocket(RiCOSSocket * const me,
   const char * SocketAddress, unsigned int nSocketPort)
{
   static struct sockaddr_in   addr;
   int proto;
   char hostName[128];
   int rvStat;

   if (me == NULL) {return 0;}

   if (nSocketPort == 0) {
      nSocketPort = 6423;
   }

   addr.sin_family = AF_INET;
   proto = IPPROTO_TCP;
   (void)gethostname(hostName, sizeof(hostName)-1);

   if (NULL != SocketAddress && strlen(SocketAddress) 
      != 0) {
      if (!strcmp(hostName, SocketAddress)) {
         SocketAddress = NULL;}
      else {
         (void)strcpy(hostName, SocketAddress);
         addr.sin_addr.s_addr = inet_addr(hostName);
         if (((unsigned long)ERROR) ==
            addr.sin_addr.s_addr) {
            addr.sin_addr.s_addr =
               hostGetByName(hostName);
         }
         if (((unsigned long)ERROR) ==
            addr.sin_addr.s_addr) {
            fprintf(stderr, "Could not get the address 
               of host '%s'\n", hostName);
            return 0;
         }
      }
   }   
   if (NULL == SocketAddress || strlen(SocketAddress) 
      == 0) {
      addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
   }

   #ifdef unix
      endprotoent();
   #endif /* unix */   

   addr.sin_port = htons((u_short)nSocketPort);   
   if ((me->theSock = socket(AF_INET, SOCK_STREAM,
      proto)) == -1) {
      fprintf(stderr,"Could not create socket\n");
      me->theSock = 0;
      return 0;
   }
   while ((rvStat = connect(me->theSock, 
      (struct sockaddr *)&addr, sizeof(addr))) ==
      SOCKET_ERROR && (errno == EINTR));
      if (SOCKET_ERROR == rvStat) {
         fprintf(stderr, "Could not connect to server 
            at %s port %d\n Error No. : %d\n", hostName,
            (int)nSocketPort, errno);
      return 0;
   }   
   return 1;
}

피드백