一个简单广播数据包代码
来源:互联网 发布:淘宝商城蕾丝打底衫 编辑:程序博客网 时间:2024/04/30 09:35
在IPV4中报文的传输分为三种方式:单播,广播,多播。
以下是一个简单的Demo
/**//*
*filename: recv.c
*compile&link: gcc -o recv recv.c
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc , char* argv[] )
...{
int fd;
int nread;
struct sockaddr_in addr;
char buf[128];
fd = socket(PF_INET,SOCK_DGRAM,0);
if ( fd == -1 )
...{
perror("socket:");
return -1;
}
memset(&addr,0,sizeof(struct sockaddr_in) );
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(5000);
addr.sin_family = AF_INET;
bind(fd,(struct sockaddr*)&addr,sizeof(struct sockaddr_in));
while ( 1 )
...{
memset(buf,0,128);
nread = recvfrom(fd,buf,128,0,NULL,NULL);
if ( nread == -1 )
...{
perror("recvfrom:");
break;
}
printf("received: %s",buf);
}
close(fd);
return 0;
}
/**//*
* filename : send.c
* compile&link : gcc -o send send.c
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> //定义了INADDE_ANY,INADDR_BROADCAST等宏
int enable_broadcast(int fd,int benable)
...{
int nresult = setsockopt(fd,SOL_SOCKET,SO_BROADCAST,(const
void*)&benable,(socklen_t)sizeof(int));
if ( nresult == -1 )
...{
perror("setsockopt:");
return -1;
}
return 1;
}
int main( int argc , char* argv[] )
...{
int fd;
struct sockaddr_in addr;
char* msg = "hello ";
fd = socket(PF_INET,SOCK_DGRAM,0);
if ( fd == -1 )
...{
perror("socket:");
return -1;
}
enable_broadcast(fd,1);
memset(&addr,0,sizeof(struct sockaddr_in));
addr.sin_addr.s_addr = INADDR_BROADCAST;
addr.sin_family = AF_INET;
addr.sin_port = htons(5000);
if ( -1 == sendto(fd,msg,strlen(msg),0,(struct sockaddr*)&addr,sizeof(struct sockaddr_in)) )
...{
perror("sendto:");
return -1;
}
return 0;
}
运行:
# ./recv&
#./send
- 一个简单广播数据包代码
- 一个简单的广播Demo
- 广播数据包的接收
- 简单代码注册广播接收者并监听多个广播
- 一个简单的以太网广播收发例子
- 一个简单的UDP广播程序
- 九.实现一个简单的Android广播
- 一个VC简单的UDP广播示例
- 一个简单的wifi状态提示广播
- 一个简单的Android BroadcastReceiver 广播实例
- 关于广播的一个简单的demo
- Android 广播的代码注册与简单使用
- 一个简单的UDP广播例子(含C/S)
- 一个简单的UDP广播例子(含C/S)
- 一个简单的UDP广播例子(含C/S)
- ZAB协议:一个简单的全序广播协议
- 注意交换机内的广播数据包
- 一个简单的聊天代码
- sql server2000中的数据类型转换的优先级
- 使用MicrosoftSQLServer2000的XML查询
- CTransformFilter
- 对表格操作的一个javascript例子
- 关于文本比较:理论和具体实现
- 一个简单广播数据包代码
- XP SP2下一些CHM文件无法打开或者页面无法显示.
- 企业管理中领导者的位置
- 计算机基础知识大全之硬件篇
- windows下unicode编程总结
- 战史今日:12月12日 西安事变爆发(70年前的记忆...)
- 如何生成校验码
- SQLServer扩展存储过程实现远程备份与恢复
- UML类图关系全面剖析