一个有关C的网络通讯有关问题

一个有关C的网络通讯问题
/*server.c*/

#include   <stdio.h>
#include   <string.h>
#include   <unistd.h>
#include   <ctype.h>
#include   <sys/socket.h>
#include   <netinet/in.h>
#include   <arpa/inet.h>
#include   <stdlib.h>
#include   <errno.h>
#include   <malloc.h>

#define   MAXLINE   100
int   port   =   8000;

int   main()
{
struct   sockaddr_in   pin;
struct   sockaddr_in   sin;
int   listen_fd;
int   conn_fd;
int   sock_fd;
int   address   =   sizeof(pin);
int   nready;
int   client[FD_SETSIZE];
int   maxi;
int   maxfd;
int   i;
int   j;
int   n;
int   k   =   0;
char   buf[MAXLINE];
char   str[MAXLINE];
fd_set   rset;
fd_set   allset;

bzero(&sin,   sizeof(sin));
sin.sin_family   =   AF_INET;
sin.sin_port   =   htons(port);
sin.sin_addr.s_addr   =   INADDR_ANY;

listen_fd   =   socket(AF_INET,   SOCK_STREAM,   0);

{
int   opt   =   1;
setsockopt(listen_fd,   SOL_SOCKET,   SO_REUSEADDR,   &opt,   sizeof(opt));
}

bind(listen_fd,   (struct   sockaddr   *)&sin,   sizeof(sin));
listen(listen_fd,   15);
printf( "Accepting   connection....\n ");

maxfd   =   listen_fd;
maxi   =   -1;
for   (i   =   0;   i   <   FD_SETSIZE;   i++)
{
client[i]   =   -1;
}

FD_ZERO(&allset);
FD_SET(listen_fd,   &allset);

for(;;)
{
rset   =   allset;
printf( "test   -1\n ");
nready   =   select(maxfd   +   1,   &rset,   NULL,   NULL,   NULL);
printf( "test   -2\n ");
if   (FD_ISSET(listen_fd,   &rset))
{
        conn_fd   =   accept(listen_fd,   (struct   sockaddr   *)&pin,   &address);
for   (i   =   0;   i   <   FD_SETSIZE;   i++)
{
if(client[i]   <   0)
{
client[i]   =   conn_fd;
break;
}
}
if(i   ==   FD_SETSIZE)
{
printf( "too   many   clients\n ");
exit(1);
}

printf( "New   client   %s   at   port   %d\n ",   inet_ntop(AF_INET,   &pin.sin_addr,   str,   sizeof(str)),   ntohs(pin.sin_port));

FD_SET(conn_fd,   &allset);
printf( "conn_fd=%d\n ",   conn_fd);
if   (conn_fd   >   maxfd)
maxfd   =   conn_fd;
if   (i   >   maxi)
maxi   =   i;
if   (--nready   <=   0)
continue;
}                           //if
/*start   to   write*/
for   (i   =   0;   i   <=   maxi;   i++)
{
if((sock_fd   =   client[i])   <   0)
continue;
if(FD_ISSET(sock_fd,   &rset))