程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-linux c socket編程 1、recv接收不完整 2、有些網站不能打開

c語言-linux c socket編程 1、recv接收不完整 2、有些網站不能打開

編輯:編程綜合問答
linux c socket編程 1、recv接收不完整 2、有些網站不能打開

小白剛接觸socket編程,很多沒搞清的地方。
我用如下代碼

 #include <stdlib.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <netdb.h>

int main() {
    int  so=socket(AF_INET,SOCK_STREAM,0),r;
    sockaddr_in addr;
    hostent *hp;
    hp=gethostbyname("www.csdn.net");
    addr.sin_addr.s_addr=*((unsigned long*)hp->h_addr);
    addr.sin_family=AF_INET;
    addr.sin_port=htons(80);
    connect(so,(sockaddr*)&addr,sizeof(sockaddr));
    char message[200]="GET / HTTP/1.0\r\nHost:www.csdn.net\r\n\r\n";
    send(so,message,strlen(message)+1,0);
    char buf[20000]={0};
    r=recv(so,buf,20000,MSG_PEEK);
    printf("r %d\n%s",r,buf);
}

1、看見recv返回的只有1400,所以buf沒有把完整的網頁源代碼記錄下來,只有一部分,請問為什麼
2、如果換一個網站,比如www.stateair.net,會出現404錯誤,但浏覽器就可以打開,請問為什麼

謝謝

最佳回答:


1、有時一次接收只有部分數據,你多接收幾次,會接受全的。
2、網站和浏覽器之間的通訊協議要搞清楚。可以用一個網路監控工具進行監控和分析。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved