svrver伺服器編寫

2021-08-08 09:22:38 字數 1464 閱讀 1781

#include #include #include #include #include /* see notes */

#include #include #include int main()

printf("create listenfd = %d success !!\n", listenfd);

int opt = 1;

setsockopt(listenfd, sol_socket, so_reuseaddr, &opt, sizeof(opt));

/* 2. 設定伺服器的ip位址和埠號(將socket和伺服器的ip位址和埠號進行繫結);bind */

memset(&srvaddr, 0, sizeof(struct sockaddr));

srvaddr.sin_family = af_inet;

srvaddr.sin_port = htons(9999);

srvaddr.sin_addr.s_addr = htonl(inaddr_any);

ret = bind(listenfd, (const struct sockaddr *)&srvaddr, sizeof(struct sockaddr));

if(ret == -1)

printf("bind success !!!\n");

/* 3. 啟動監聽(啟動伺服器); listen */

ret = listen(listenfd, 0);

if (ret == -1)

printf("listen success !!\n");

/* 4. 等待伺服器的連線請求,如果沒有連線請求則等待,如果有連線請求,則建立連線; accept */

addlen = sizeof(socklen_t);

memset(&cltaddr, 0, sizeof(struct sockaddr_in));

connfd = accept(listenfd, (struct sockaddr *)&cltaddr, &addlen);

if (connfd == -1)

printf("connect connfd = %d success \n", connfd);

printf("%x\n", cltaddr.sin_addr.s_addr);

struct timeval time;

time.tv_sec = 3;

time.tv_usec = 0;

setsockopt(connfd, sol_socket, so_rcvtimeo, &time, sizeof(time));

while(1)

ret = write(connfd, buf, sizeof(buf));

if (ret == -1)

} /* 6. 關閉 close; */

return 0;

}

編寫自己的伺服器

由於學習介面測試,對伺服器的原理產生濃厚興趣,對最近的收穫做個總結 由於瀏覽器本身就是客戶端,對伺服器進行發報並接受回報,進行解析顯示,所以客戶端就不進行編寫 伺服器 我主要遇到的問題是bind的ip及埠選取,bind的意思是設定伺服器的ip,這個如果是自己嘗試一般都是使用本機的ip即可,埠則是通過...

gSOAP C 編寫伺服器端

1.編寫標頭檔案cal.h gsoap ns service name calc gsoap ns service style rpc gsoap ns service encoding encoded gsoap ns service namespace gsoap ns service loca...

編寫簡單多執行緒web伺服器

編寫簡單多執行緒web伺服器 刺蝟 http blog.csdn.net littlehedgehog 下面的原理解釋參照 乙個多執行緒web伺服器例項 c,linux,詳細的web伺服器原理 一文 原理 在瀏覽器中輸入乙個 回車之後,瀏覽器會向相應主機的相應埠傳送一段報文,如果是http協議的 如...