6-14 LAN Interface Supplement
Controlling the Analyzer via the LAN
Controlling the Analyzer with a C Program
/* fprintf(stderr, "Sending \"%s\".\n", command); */
if (strchr(command, '\n') == NULL) {
fprintf(stderr, "Warning: missing newline on command %s.\n", command);
}
count = send(sock, command, strlen(command), 0);
if (count == SOCKET_ERROR) {
return COMMAND_ERROR;
}
return NO_CMD_ERROR;
}
/**************************************************************************
* recv_line(): similar to fgets(), but uses recv()
**************************************************************************/
char * recv_line(SOCKET sock, char * result, int maxLength)
{
#ifdef WINSOCK
int cur_length = 0;
int count;
char * ptr = result;
int err = 1;
while (cur_length < maxLength) {
/* Get a byte into ptr */
count = recv(sock, ptr, 1, 0);
/* If no chars to read, stop. */
if (count < 1) {
break;
}
cur_length += count;
/* If we hit a newline, stop. */
if (*ptr == '\n') {
ptr++;
err = 0;
break;
}
ptr++;
}
*ptr = '\0';
if (err) {
return NULL;
} else {
return result;
}
#else
/***********************************************************************
* Simpler UNIX version, using file I/O. recv() version works too.
* This demonstrates how to use file I/O on sockets, in UNIX.
***********************************************************************/
FILE * instFile;
instFile = fdopen(sock, "r+");
if (instFile == NULL)