C語言使用多程序實現高併發tcp伺服器

2022-08-23 12:18:12 字數 1725 閱讀 6795

socket; 建立監聽套接字

bind; 繫結位址結構

listen(); 設定監聽上限

accept();進行迴圈監聽

fork();接收到客戶端請求建立新的程序

close(); 與客戶端通訊的套接字關閉

#include #include #include #include #include #include void perr_exit(const char *s)

int accept(int fd, struct sockaddr *sa, socklen_t *salenptr)

return n;

}int bind(int fd, struct sockaddr *sa, socklen_t salen)

return n;

}int connect(int fd, const struct sockaddr *sa, socklen_t salen)

return n;

}int listen(int fd, int backlog)

return n;

}int socket(int family, int type, int protocol)

return n;

}ssize_t read(int fd, void *ptr, size_t nbytes)

return n;

}ssize_t write(int fd, const void *ptr, size_t nbytes)

return n;

}int close(int fd)

return n;

}// 讀取指定大小的內容

ssize_t readn(int fd, void *vptr, size_t n)

else if (nread == 0)

break;

nleft -= nread;

ptr += nread;

}return n - nleft;

}ssize_t writen(int fd, const void *vptr, size_t n)

nleft -= nwritten;

ptr += nwritten;

}return n;

}static ssize_t my_read(int fd, char *ptr)

else if (read_cnt == 0)

return 0;

read_ptr = read_buf;

}read_cnt--;

*ptr = *read_ptr++;

return 1;

}ssize_t readline(int fd, void *vptr, size_t maxlen)else if (rc==0) else

return -1;

}*ptr = 0;

return n;

}int main(int agrv, char *agrc)

else if (pid==0) else

close(cfd);

continue;}}

if (pid == 0)

for (i=0; irequest = buf;

cout

write(stdout_fileno, buf, ret);}}

}

Nginx 多程序模型是如何實現高併發的?

程序數與併發數不存在很直接的關係。這取決取 server 採用的工作方式。如果乙個 server 採用乙個程序負責一 個 request 的方式,那麼程序數就是併發數。那麼顯而易見的,就是會有很多程序在等待中。等什麼?最多的應該是 等待網路傳輸。nginx 的非同步非阻塞工作方式正是利用了這點等待的...

bash shell實現併發多程序操作

bash shell實現併發多程序操作 前言目前我掌握的基本語言,php 最為熟悉,專案裡 都是用其實現 bash shell 運維利器 c acm專用 這裡面能實現多執行緒的貌似只有c,但是我c只是用來學習和實現演算法和資料結構,因此工作中我想要模擬多程序併發操作,就只能依靠bash shell指...

併發伺服器 多程序實現

通過簡單的socket可以實現一對一的c s通訊,當多個客戶端同時進行伺服器訪問,那麼伺服器只能按序的一一進行處理,除了第乙個客戶端,其餘客戶端都會陷入等待。並且這樣的程式只能實現半雙工通訊 資料能雙向傳輸,但同一時刻只能單向傳遞,通過切換傳輸方向實現雙工 而且實現方式繁瑣,功能拘束,實用價值很低。...