for (;;) {
clientfd = accept(sockfd, (struct sockaddr *) &client_addr,
&cliaddr_len);
printf("server get connection from %s.\n", inet_ntoa(
client_addr.sin_addr));
int readize = 0;
while ((readize = read(clientfd, buf, MAXLINE)) > 0) {
printf("內容:%.*s", readize,buf);
printf("長度:%d...\n", readize);
}
write(clientfd, buf, readize);
close(clientfd);
} 以上是簡單的server demo,我在與WebSocket客戶端握手的時候也用的這樣的流程,先處理請求,如果包涵
GET / HTTP/1.1
Connection:Upgrade
Host:127.0.0.1:8088
Origin:null
Sec-WebSocket-Extensions:x-webkit-deflate-frame
Sec-WebSocket-Key:puVOuWb7rel6z2AVZBKnfw==
Sec-WebSocket-Version:13
Upgrade:websocket
就去決議然后send頭部然后回傳
HTTP/1.1 101 Switching Protocols
Connection:Upgrade
Server:beetle websocket server
Upgrade:WebSocket
Date:Mon, 26 Nov 2012 23:42:44 GMT
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:content-type
Sec-WebSocket-Accept:FCKgUr8c7OsDsLFeJTWrJw6WO8Q=
因為是剛學習,現在問題是,我不明白為什么每次回圈都要close一下,如果close客戶端能拿到頭部,但是報錯現實服務器已經關閉,如果不close則客戶端一直拿不到資料,這個問題困擾我好久了,請大神幫我看看,萬分感激!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/132557.html
標籤:網絡通信
上一篇:路由管理工具是怎么實作管理路由的(比如tplink的某一款)?
下一篇:WIFI共享問題
