Gemnpal
不知道什么昵称
2015-05-01 03:36
采纳率: 66.7%
浏览 3.3k

linux c语言 socket编程 recv每次收到一样的数据

#include
#include
#include
#include
#include
#include
#include
#include
#include
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[1024]={0};
while(recv(so,buf,1024,MSG_PEEK)){
puts(buf);
memset(buf,0,1024);
}
}
就这样一直收不完,请问为什么
谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • u011767611
    Landpack 2015-05-02 03:27
    已采纳

    Please Don't use "MSG_PEEK",If you use it ,you will recv the same message !!!

    点赞 评论
  • 91program
    91program 2015-05-01 04:57

    HTTP GET 方式,你每次发送的 GET 指令都相同,接收到的内容是一样这很正常;接收到的不一样,个人认为才是不正常的。

    点赞 评论
  • oyljerry
    oyljerry 2015-05-01 06:29

    你fwencsdn,页面返回内容很多吧,你buf开大一点呢。这样i一次可以多处理一些。

    点赞 评论
  • caozhy
    点赞 评论

相关推荐