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