为什么 这个c语言写的socket程序没有成功访问到百度?

#include<stdio.h>
#include<string.h>
#include<winsock2.h>
char buff[2001];
int main()
{
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 0), &wsaData);
    //我也不知道干什么的 

    int sockfd=socket(AF_INET,SOCK_STREAM,0);//用的socket   
    struct sockaddr_in dest_addr;  //要访问的地址信息 
    int size;
    
    char s[]="GET / HTTP/1.1\r\n""Host:www.baidu.com\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Connection: Keep-Alive\r\n";
    //http的get方法的报头 
    
    dest_addr.sin_family=AF_INET;
    dest_addr.sin_port=htons(80);
    dest_addr.sin_addr.s_addr=inet_addr("61.135.169.121");
    memset(dest_addr.sin_zero,0,8);
    //对目标地址信息进行填充, ip地址是ping出来的 
    
    connect(sockfd,(struct sockaddr*)&dest_addr,sizeof(struct sockaddr));
    //进行连接 
    
    printf("connect success");

    send(sockfd,s,sizeof(s),0);

    buff[recv(sockfd,buff,2000,0)]=0;
    printf("%s",buff);

    closesocket(sockfd);

    return 0;
}
阅读 2.2k
1 个回答

你的connect success没打印可能是因为在IO缓冲中了,
使用

    printf("connect success\n"); //注意最后有一个\n

或者

    printf("connect success");
    fflush(stdout);

应该都可以。

至于没有返回内容,可能是GET请求不对吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进