Page 914 - 3-3
P. 914

memset(&packet, 0, sizeof(packet));


                 // catch  문에서 if 문을 사용하면 코드가 정상적으로 실행되지 않으므로
                 // try  문에서 try 문을 써서 처리함.
                 try {
                     if (fd == RaspSocket) {
                         // Python 에서 패킷 전송 시 패킷 구성요소 별로 recv()              를 호출해야
                         //  변수에 값이 정확히 들어감.
                         try {
                             Server->recv(packet.name, NAMESIZE, fd);
                             Server->recv(&packet.status, sizeof(packet.status), fd);
                         }
                         catch (TcpServerSock::Exception &e) {
                             RaspSocket = 0;
                             throw e;
                         }
                     }
                     else
                         Server->recv(&packet, sizeof(packet), fd);
                 }
                 catch (TcpServerSock::Exception &e) {
                     std::cerr << std::endl;
                     std::cerr << "Error occured in ProcCommon(), receiving failed" << std::endl;
                     e.What();
                     std::cerr << std::endl;


                     close(fd);
                     FD_CLR(fd, &ori_reads);


                     return;
                 }


                // Java 에서 문자열을 전송할 경우 문자열 마지막에 ‘\n’                 이 붙어 정상적인 처리가 안될
                 //  수 있으므로 배열의 마지막을 0           으로 바꿔야 한다.
                 packet.name[NAMESIZE] = 0;


                 // packet.status 가 Ascii 코드면 Integer 로 변환
                 if (packet.status >= ‘0’)
                     packet.status -= '0';
                 char *stat = ConvertStatus(packet);


                 // Print packet information
                 printf("\nFD: %d\n", fd);
                 printf("Name: %s\n", packet.name);
                 printf("Status: %d\n", packet.status);


                                                        - 914 -
   909   910   911   912   913   914   915   916   917   918   919