- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络接口编程-天,广播程序
广播:
接收程序
#includestdio.h
#includewinsock2.h
#includewindows.h
#pragma comment(lib,ws2_32.lib)
void main(void)
{ SOCKET s; sockaddr_in from,a; WSADATA wsdata; BOOL optval;
//启动SOCKET库,版本为2.0
WSAStartup(WINSOCK_VERSION,wsdata);
optval=TRUE;
//然后赋值给两个地址,一个用来绑定套接字,一个用来从网络上的广播地址接收消息;
a.sin_family=AF_INET;
a.sin_addr.s_addr=INADDR_ANY;
a.sin_port=htons(9999);
from.sin_family=AF_INET;
from.sin_addr.s_addr=INADDR_BROADCAST;
from.sin_port=htons(9999);
int fromlength=sizeof(SOCKADDR);
//用UDP初始化套接字
s=socket(AF_INET,SOCK_DGRAM,0);
//设置该套接字为广播类型,
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char FAR *)optval,sizeof(optval));
bind(s,(sockaddr *)a,sizeof(sockaddr_in));
char buf[256]; while(1)
{
//从广播地址接收消息,注意用来绑定的地址和接收消息的地址是不一样的
recvfrom(s,buf,256,0,(struct sockaddr FAR *)from,(int FAR *)fromlength);
Sleep(2000);
printf(%s\n,buf);
ZeroMemory(buf,256);
memset(buf,0,sizeof(buf));
}
}
发送程序:
#includestdio.h
#includewinsock2.h
#includewindows.h
#pragma comment(lib,ws2_32.lib)
main()
{ SOCKET s; sockaddr_in addrto; WSADATA wsdata; BOOL bsocket;
char *smsg=你好!这是广播测试!;
WSAStartup(WINSOCK_VERSION,wsdata);
s=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
bsocket=TRUE;
//然后赋值给地址,用来从网络上的广播地址接收消息;
memset (addrto,0,sizeof(addrto)) ;
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=INADDR_BROADCAST;
addrto.sin_port=htons(9999);
bool opt=true;
//设置该套接字为广播类型,
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char FAR *)opt,sizeof(opt));
int nlen=sizeof(addrto);
while(1) { Sleep(2000);
//从广播地址发送消息
int ret=sendto(s,smsg,256,0,(sockaddr*)addrto,nlen);
if(ret==SOCKET_ERROR)
printf(Send error %d!\n,WSAGetLastError());
else
{
printf(广播发送成功\n);
}
}
}
服务器端程序:
1、创建套接字(socket)
2、将socket绑定到一个本地IP地址和端口上(bind)
3、将socket设为监听模式,准备接收客户请求(listen)
4、等待客户请求到来:当请求到来后,接收连接请求,返回一个新的对应于此次连接的socket(accept)
5、用返回的socket和客户端进行通信(send/recv)
6、返回,等待另一客户请求
7、关闭socket(closesocket)
客户端程序:
1、创建套接字(socket)
2、向服务器发出连接请求(connect)
3、和服务器进行通信(send/recv)
4、关闭sock
文档评论(0)