为什么我的C语言程序收不到广播包。而且recvfrom的返回值是-1(出错) 10

#include<winsock2.h>#include<stdio.h>#pragmacomment(lib,"ws2_32.lib")main(){FILE*fp;W... #include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")

main()
{
FILE * fp;
WSADATA wd;
int retval;
SOCKET sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
struct sockaddr_in saddr;
BOOL bConditionalAccept=TRUE;

struct sockaddr_in saddrsrv;
char heading[3];
char buffer[5000];
int size;

fp=fopen(".\\record.txt","a+");

if((WSAStartup(MAKEWORD(1,1),&wd))==SOCKET_ERROR)
{
printf("Error occured when loading the WINSOCK_DLL...");
exit(-1);
}
WSAStartup(MAKEWORD(2,2),&wd);
saddrsrv.sin_family=AF_INET;
saddrsrv.sin_addr.s_addr=INADDR_BROADCAST;
saddrsrv.sin_port=htons(5050);
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char FAR *)&bConditionalAccept,sizeof(BOOL));
saddr.sin_family=AF_INET;
saddr.sin_port=htons(5050);
saddr.sin_addr.S_un.S_addr=0;
bind(sock,(struct sockaddr *)&saddr,sizeof(saddr));
size=sizeof(saddrsrv);

for(;;)
{
retval=recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr *)&saddrsrv,&size);
if(retval==SOCKET_ERROR)
{
continue;
}
fprintf(fp,"%s",buffer);

printf("%s",buffer);
}
}
展开
 我来答
osh3lzfp9
2011-03-25 · TA获得超过1129个赞
知道小有建树答主
回答量:1332
采纳率:0%
帮助的人:813万
展开全部
,如果非阻塞则会立即返回。
追问
已经是阻塞模式啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式