c/s架構是最為基礎的網路構件。 各個平台,各個語言中,socket tcp網路程式設計最為基本的就是
伺服器:
socket() //建立socket
bind() // 繫結位址
listen() // 監聽埠
accept() // 接受請求
send()
recv()
客戶端:
socket() // 建立socket
connect() // 連線到伺服器
send() // 傳送訊息
recv() //接收訊息
**如下
#include "../sock.h"
#include #include #include #include #include #include #include #define bufsize 1024
#define listenq 5
int main(int argc, char *argv)
; char read_buf[bufsize] = ;
listen_sockfd = socket(af_inet, sock_stream, 0);
server_addr.sin_family = af_inet;
server_addr.sin_addr.s_addr = inaddr_any;
server_addr.sin_port = htons(8000);
bind(listen_sockfd, (struct sockaddr *) &server_addr,
sizeof(server_addr));
listen(listen_sockfd, listenq);
while (1)
ticks = time(null);
snprintf(write_buf, sizeof(write_buf), "%s", ctime(&ticks));
send(client_sockfd, write_buf, strlen(write_buf), 0);
close(client_sockfd);
}close(listen_sockfd);
return 0;
}
客戶端:
#include #include "../sock.h"
#include #include #include #include #include #define bufsize 1024
int main()
; char read_buf[bufsize] = ;
server_addr.sin_family = af_inet;
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(8000);
server_sock = socket(af_inet, sock_stream, 0);
connect(server_sock, (struct sockaddr *) &server_addr,
sizeof(struct sockaddr));
sprintf(write_buf, "hello");
send(server_sock, write_buf, strlen(write_buf), 0);
recv(server_sock, read_buf, bufsize, 0);
printf("%s\n", read_buf);
fflush(stdout);
close(server_sock);
return 0;
}
網路管理伺服器篇之IIS
在使用windows nt 4.0時,iis就已經成為流行的web伺服器平台。iis4.0是作為optionpack4的一部分發行的,需要進行額外的安裝才能執行。然而,在windows2000中,iis5.0應經完全成為作業系統的乙個有機組成部分,如果在安裝windows2000時沒有選擇安裝iis...
Unix網路程式設計伺服器設計方式之四
預先建立子程序的方式比為每個客戶端建立乙個程序的方式優越的地方在於當伺服器啟動時就將子程序建立好,當乙個客戶端連線至伺服器時選擇乙個可用的子程序處理,這樣可以節省到建立子程序的消耗。有乙個弊端是需要事先確定子程序的個數,當客戶端多於子程序的個數時,基於的客戶端只能等待可用的子程序。有一種解決方法就是...
Unix網路程式設計伺服器設計方式之六
此種方式是由主線程預先建立多個工作執行緒,並且主線程不斷的監聽連線請求,當有連線請求時先獲得鎖,並將連線放入到連線陣列中,並通知空閒的工作執行緒 即阻塞在條件等待處的工作執行緒 進行請求處理,工作執行緒得到通知後先在連線陣列中拿乙個可用的連線,並將其標記為已處理,然後釋放鎖,執行請求處理函式。此方式...