1 进程模型
通过fork方式创建一个子进程,由子进程处理一个客户端连接,此种方式在大并发下非常耗费系统资源,不建议使用
参考代码 server.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUF_SIZE 100
int main()
{
//create socket
int iServer = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == iServer)
{
return -1;
}
printf("create socket ok\r\n");
//bind
struct sockaddr_in stServer;
memset(&stServer, 0, sizeof(struct sockaddr_in));
stServer.sin_family = AF_INET;
stServer.sin_port = htons(8888);
//stServer.sin_addr.s_addr = inet_addr("0.0.0.0");
stServer.sin_addr.s_addr = INADDR_ANY;
int iRet = bind(iServer, (struct sockaddr *)&stServer, sizeof(struct sockaddr_in));
if (-1 == iRet)
{
return -1;
}
printf("bind ok\r\n");
//listen
iRet = listen(iServer, 5);
if (-1 == iRet)
{
return -1;
}
printf("listen ok\r\n");
//accept
struct sockaddr_in stClient;
socklen_t tLen = sizeof(struct sockaddr_in);
char buf[BUF_SIZE];
while(1)
{
memset(&stClient, 0, sizeof(struct sockaddr_in));
memset(buf, 0, BUF_SIZE);
int iClient = accept(iServer, (struct sockaddr *)&