请求一个完整代码
static void app_run()
{
int port = 2001;
char sz_ip[50] = "127.0.0.1";
int sock_type = SOCK_STREAM;
int from_len;
WSADATA wsaData;
struct sockaddr_in local_addr;
struct sockaddr_in from_addr;
SOCKET listen_sock;
SOCKET msg_sock;
CHAT_CLIENT *temp_client;
char from_ipstr[20];
//printf("\n (server) enter your ip:\n");
//scanf("%s",sz_ip);
//printf("\n (server) enter your port:\n");
//scanf("%d",&port);
strcpy(sz_ip,"192.168.16.18");
port = 2001;
if(WSAStartup(0x202,&wsaData) != 0)
{
printf("\n !!!wsastartup fail\n");
WSACleanup();
return;
}
printf("\n WSAStartup() ok \n");
ew_net_addr_by_ip(&local_addr,sz_ip,port);
listen_sock = socket(AF_INET,sock_type,0);
if(listen_sock == INVALID_SOCKET)
{
printf("\n !!!socket() creating fail\n");
WSACleanup();
return;
}
printf("\n socket() ok\n");
if(bind(listen_sock,(struct sockaddr*)&local_addr,sizeof(local_addr)) == SOCKET_ERROR)
{
printf("\n !!!bind() fail\n");
WSACleanup();
return;
}
printf("\n bind() ok \n");
if(listen(listen_sock,5) == SOCKET_ERROR)
{
printf("\n !!!listen() fail\n");
WSACleanup();
return;
}
printf("\n listen() ok \n");
while(true)
{
from_len = sizeof(from_addr);
msg_sock = accept(listen_sock,(struct sockaddr *)&from_addr,&from_len);
if(msg_sock == INVALID_SOCKET)
{
printf("\n !!!accept() fail %d\n",WSAGetLastError());
WSACleanup();
continue;
}
ew_net_ipstr(&from_addr,from_ipstr);
client_add(from_ipstr,ntohs(from_addr.sin_port),msg_sock);
client_get(from_ipstr,ntohs(from_addr.sin_port),&temp_client);
CreateThread(NULL,0,proc_client,temp_client,0,NULL);
}
WSACleanup();
}
以上不是完整代码,想学习一下,请大家帮忙给我贴一个典型的完整的父进程生成子进程处理的过程好吗?谢谢,我要c的