int TcpServer()
{
int sockfd;
int sin_size, numbytes;
struct sockaddr_in addr, cliaddr;
socklen_t addr_len;
/*******************************************************************
* 建立一个TCPIP连接,并取得装置描述m_nSockfd
*******************************************************************/
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
{
perror("create Socket");
return -1;
}
/*******************************************************************
* 初始化sockadd_in结构
*******************************************************************/
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(10010);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定套接口
if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
return -1;
}
//创建监听套接口
if(listen(sockfd,10)==-1)
{
perror("listen");
return -1;
}
//等待连接
while(1)
{
sin_size = sizeof(struct sockaddr_in);
perror("server is run");
//如果建立连接,将产生一个全新的套接字
if((new_fd = accept(sockfd,(struct sockaddr *)&cliaddr,&sin_size))==-1)
{
perror("accept");
return -1;
}
//生成一个子进程来完成和客户端的对话,父进程继续监听
if(!fork())
{
//读取客户端发来的信息
while(1)
{
memset(buff,0,sizeof(buff));
if((numbytes = recv(new_fd,buff,sizeof(buff),0))==-1)
{
perror("recv\n");
return -1;
}
printf("buff=%s\n",buff);
check_order(); //对网络客户端发来的信息进行辨别
sleep(1);
memset(buff,0,sizeof(buff));
}
close(new_fd);
return 0;
}
close(new_fd);
}
close(sockfd);
return 0;
}
{
int sockfd;
int sin_size, numbytes;
struct sockaddr_in addr, cliaddr;
socklen_t addr_len;
/*******************************************************************
* 建立一个TCPIP连接,并取得装置描述m_nSockfd
*******************************************************************/
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
{
perror("create Socket");
return -1;
}
/*******************************************************************
* 初始化sockadd_in结构
*******************************************************************/
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(10010);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定套接口
if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
return -1;
}
//创建监听套接口
if(listen(sockfd,10)==-1)
{
perror("listen");
return -1;
}
//等待连接
while(1)
{
sin_size = sizeof(struct sockaddr_in);
perror("server is run");
//如果建立连接,将产生一个全新的套接字
if((new_fd = accept(sockfd,(struct sockaddr *)&cliaddr,&sin_size))==-1)
{
perror("accept");
return -1;
}
//生成一个子进程来完成和客户端的对话,父进程继续监听
if(!fork())
{
//读取客户端发来的信息
while(1)
{
memset(buff,0,sizeof(buff));
if((numbytes = recv(new_fd,buff,sizeof(buff),0))==-1)
{
perror("recv\n");
return -1;
}
printf("buff=%s\n",buff);
check_order(); //对网络客户端发来的信息进行辨别
sleep(1);
memset(buff,0,sizeof(buff));
}
close(new_fd);
return 0;
}
close(new_fd);
}
close(sockfd);
return 0;
}