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

发布于 2022-09-11 15:38:19 字数 1013 浏览 23 评论 0

#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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泛泛之交 2022-09-18 15:38:19

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

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

或者

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

应该都可以。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文