APPENDIX
if(length == SOCKET_ERROR) {
nErrorStatus = WSAGetLastError();
if(nErrorStatus != WSAEWOULDBLOCK) {
Sockerror(ERROR_RECIEVE);
return (SOCK_NG);
} else {
continue;
}
} else {
rbuf_idx += length;
recv_size += length;
if(recv_size >= RECV_ANS_2)
break;
}
}
r_buf[rbuf_idx] = '\0' ;
printf("\receive data\n%s\n", r_buf);
if(shutdown(socketno,2)!=SOCK_OK){
Sockerror(ERROR_SHUTDOWN);
return(SOCK_NG);
}
if(closesocket(socketno)!=SOCK_OK){
Sockerror(ERROR_CLOSE);
return(SOCK_NG);
}
Closeflag=FLAG_OFF;
WSACleanup();
printf("\nAJ_test End.\n\n Normally completed. \n");
printf("Press any key to exit the program.\n");
Dmykeyin=getchar();
return(SOCK_OK);
}
void Sockerror(int error_kind)
{
if(error_kind==ERROR_INITIAL){
printf("Initial processing is abnormal.");
}
App - 24
MELSEC-Q
// Manejo de error
// Repita hasta que los mensajes se
// reciban
// Actualice el almacenaje de datos de
// recepción
// posición
// Número de actualización de datos de
// recepción
// ¿Todos los mensajes de respuesta
// se han recibido?
// Pare la repetición porque mensajes
// han sido recibidos
// Asigne NULL al final de los datos de
// recepción
// Procese a deshabilitado
// envío/recepción
// Manejo de error
// Procesamiento de cierre
// Manejo de error
// Señalizador de finalización de
// conexión apagado
// Libere el Winsock.DLL
// Espere para el ingreso de clave
// Función de manejo de error
App - 24