Listing 4: Socket I/O functions
#include <stdio.h>
#include <string.h>
#define MAXBUF 512
/*
---------------- recvStr ----------------
read a newline-terminated string from a
stream socket descriptor
*/
int recvStr(int fd, char *cptr, int *len)
{
int i, n;
*len = 0;
i = 0;
while (1)
{ if (i == MAXBUF-1)
{ fprintf(stderr,
"*Warning - input buffer overflow\n");
break;
}
n = read(fd, cptr+i, 1);
if (n < 0)
{ perror("read");
return(0);
}
else if (n == 0)
{ cptr[i] = '\0';
*len = i;
return(0); /* EOF */
}
else if (cptr[i] == '\r')
/* watch for cr-lf */
continue;
else if (cptr[i] == '\n')
break;
i++;
}
cptr[i] = '\0';
*len = i;
return(1);
}
/*
----------------- sendStr ---------------
write an asciiz string to a stream socket
descriptor
return 0 on error
*/
int sendStr(int fd, char *cptr)
{
if (write(fd, cptr, strlen(cptr)) < 0)
{ perror("write");
return (0);
}
return(1);
}
/* End of File */