|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在bind 广播地址 会一直返回-1,忽略即可~
广播你懂的,局域网virus,通信必备。
服务器代码:
- #include <stdio.h>
- #include <windows.h>
- #pragma comment(lib,"ws2_32.lib")
- #define ServicPort 1447
- void showerr(char * err,bool exit1)
- {
- printf(err);
- if(exit1)
- {
- getchar();
- exit(0);
- }
- }
- int main()
- {
- WSAData wdata;
- WSAStartup(MAKEWORD(2,2),&wdata);
- SOCKET service;
- SOCKADDR_IN saddr={0};
- service = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
- int iaddrlen;
- if(service == INVALID_SOCKET)
- {
- showerr("不能创建套接字!\n",true);
- return 0;
- }
- saddr.sin_port = htons(ServicPort);
- saddr.sin_family = AF_INET;
- saddr.sin_addr.S_un.S_addr = INADDR_BROADCAST;
- iaddrlen = sizeof(SOCKADDR_IN);
- //设置该套接字为广播类型
- bool bOpt = true;
- setsockopt(service,SOL_SOCKET,SO_BROADCAST,(char *)&bOpt,sizeof(bOpt));
- int err = bind(service,(SOCKADDR * )&saddr,iaddrlen);
- while(true)
- {
- char * buffer = "Hello world!\n There is socket broadcast test !\n";
- int iret =
- sendto(service,buffer,strlen(buffer),0,(SOCKADDR * )&saddr,iaddrlen);
- if(iret == SOCKET_ERROR)
- printf("Send failed!\n");
- else
- printf("Success \n");
- Sleep(500);
- }
- return 0;
- }
复制代码
接收器代码:
- #include <stdio.h>
- #include <windows.h>
- #pragma comment(lib,"ws2_32.lib")
- #define ServicPort 1447
- void showerr(char * err,bool exit1)
- {
- printf(err);
- if(exit1)
- {
- getchar();
- exit(0);
- }
- }
- int main()
- {
- WSAData wdata;
- WSAStartup(MAKEWORD(2,2),&wdata);
- SOCKET connect_sock;
- SOCKADDR_IN saddr={0};
- SOCKADDR_IN saddr_from={0};
- connect_sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
- int iaddrlen;
- if(connect_sock == INVALID_SOCKET)
- {
- showerr("不能创建套接字!\n",true);
- return 0;
- }
- saddr.sin_port = htons(ServicPort);
- saddr.sin_family = AF_INET;
- saddr.sin_addr.S_un.S_addr = 0;
- saddr_from.sin_port = htons(ServicPort);
- saddr_from.sin_family = AF_INET;
- saddr_from.sin_addr.S_un.S_addr = INADDR_BROADCAST;
- iaddrlen = sizeof(SOCKADDR_IN);
- //设置该套接字为广播类型
- bool bOpt = true;
- setsockopt(connect_sock,SOL_SOCKET,SO_BROADCAST,(char *)&bOpt,sizeof(bOpt));
- int err = bind(connect_sock,(SOCKADDR * )&saddr,iaddrlen);
- if(err != 0)
- {
- printf("%d %d\n",err,WSAGetLastError());
- showerr("绑定套接字失败!\n",true);
- }
- int count = 0;
- while(true)
- {
- char buffer[1024]={0};
- int nsize;
- nsize = recvfrom(connect_sock,buffer,1024,0,(SOCKADDR *)&saddr_from,&iaddrlen);
- if(nsize>0)
- printf("%d : %s \n\n",count++,buffer);
- Sleep(2000);
- }
- return 0;
- }
复制代码 |
评分
-
参与人数 1 | 荣誉 +10 |
鱼币 +10 |
贡献 +10 |
收起
理由
|
康小泡
| + 10 |
+ 10 |
+ 10 |
热爱鱼C^_^ |
查看全部评分
|