Since select, poll, and AIO are all written, then write it all.
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <fcntl.h>
int main (int argc, char *argv[])
{
int LISTENFD, CONNFD;
struct sockaddr_in serveraddr;
Char buff[20];
if ((LISTENFD = socket (af_inet, sock_stream, 0)) = = 1)
{
printf ("Create Error:%s (errno=%d) \ n", Strerror (errno), errno);
Exit (0);
}
memset (&serveraddr, 0, sizeof (SERVERADDR));
serveraddr.sin_family = af_inet;
SERVERADDR.SIN_ADDR.S_ADDR = htonl (Inaddr_any);
Serveraddr.sin_port = htons (6789);
if (Bind (LISTENFD, (struct sockaddr*) &serveraddr, sizeof (serveraddr)) = = 1)
{
printf ("Bind Error:%s (errno=%d) \ n", Strerror (errno), errno);
Exit (0);
}
if (Listen (LISTENFD, 5) = = 1)
{
printf ("Listen Error:%s (errno=%d) \ n", Strerror (errno), errno);
Exit (0);
}
if ((CONNFD = Accept (LISTENFD, (struct sockaddr*) null, NULL) = =-1)
{
printf ("Accept Error:%s (errno=%d) \ n", Strerror (errno), errno);
}
if (Fcntl (CONNFD, F_SETFL, o_nonblock) = = 1)
{
printf ("Fcntl Error:%s (errno=%d) \ n", Strerror (errno), errno);
Exit (0);
}
int i = 0;
do {
int len = recv (CONNFD, Buff, 20, 0);
if (len = = 1)
{
if (errno = = eagain)//no data come
{
printf ("Recv Error:%s (errno=%d) \ n", Strerror (errno), errno);
Break
}
printf ("No date loop%d\n", i++);
}
Else
{
Buff[len] = ' the ';
printf ("recv data =%s, Len =%d\n", buff, Len);
Break
}
while (1);
Close (CONNFD);
Close (LISTENFD);
return 0;
}