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 -