TCP/IP 广播的发送和接收
发送端:
1: /*
2: * =====================================================================================
3: *
4: * Filename: client.c
5: *
6: * Description:
7: *
8: * Version: 1.0
9: * Created: 03/14/2013 01:48:12 PM
10: * Revision: none
11: * Compiler: gcc
12: *
13: * Author: YOUR NAME (),
14: * Company:
15: *
16: * =====================================================================================
17: */
18:
19: #include <stdio.h>
20: #include <sys/socket.h>
21: #include <netinet/in.h>
22: #include <arpa/inet.h>
23: #include <stdlib.h>
24: #include <strings.h>
25: #include <string.h>
26: #include <unistd.h>
27:
28: #define N 256
29:
30: typedef struct sockaddr SA;
31:
32: int main(int argc, char *argv[])
33: {
34:
35: int sockfd;
36: int on = 1;
37: socklen_t optlen = sizeof(on);
38: struct sockaddr_in broad_addr;
39: char buffer[N] = {"pengdonglin"};
40:
41:
42: if(argc < 3)
43: {
44: printf("usage: %s <ip> <port>\n",argv[0]);
45: exit(-1);
46: }
47: if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
48: {
49: perror("fail to socket");
50: exit(-1);
51: }
52:
53: if(setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, optlen) < 0)
54: {
55: perror("fail to getsockopt");
56: exit(-1);
57: }
58:
59: bzero(&broad_addr, sizeof(struct sockaddr_in));
60:
61: broad_addr.sin_family = PF_INET;
62: broad_addr.sin_port = htons(atoi(argv[2]));
63: broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
64:
65: while(1)
66: {
67: sendto(sockfd,buffer, N, 0, (SA *)&broad_addr, sizeof(broad_addr));
68: sleep(1);
69: }
70:
71: return 0;
72: }
接收:
1: /*
2: * =====================================================================================
3: *
4: * Filename: client.c
5: *
6: * Description:
7: *
8: * Version: 1.0
9: * Created: 03/14/2013 01:48:12 PM
10: * Revision: none
11: * Compiler: gcc
12: *
13: * Author: YOUR NAME (),
14: * Company:
15: *
16: * =====================================================================================
17: */
18:
19: #include <stdio.h>
20: #include <sys/socket.h>
21: #include <netinet/in.h>
22: #include <arpa/inet.h>
23: #include <stdlib.h>
24: #include <strings.h>
25: #include <string.h>
26: #include <unistd.h>
27:
28: #define N 256
29:
30: typedef struct sockaddr SA;
31:
32: int main(int argc, char *argv[])
33: {
34:
35: int sockfd;
36: struct sockaddr_in broad_addr, peeraddr;
37: socklen_t peerlen = sizeof(peeraddr);
38: char buffer[N];
39:
40: if(argc < 3)
41: {
42: printf("usage: %s <ip> <port>\n",argv[0]);
43: exit(-1);
44: }
45:
46: if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
47: {
48: perror("fail to socket");
49: exit(-1);
50: }
51:
52:
53: bzero(&broad_addr, sizeof(struct sockaddr_in));
54:
55: broad_addr.sin_family = PF_INET;
56: broad_addr.sin_port = htons(atoi(argv[2]));
57: broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
58:
59: if(bind(sockfd, (SA *)&broad_addr, sizeof(broad_addr)) < 0)
60: {
61: perror("fail to bind");
62: exit(-1);
63: }
64: while(1)
65: {
66: recvfrom(sockfd, buffer, N, 0, (SA *)&peeraddr, &peerlen);
67:
68: printf("%s : %d : %s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port),buffer);
69: }
70:
71: return 0;
72: }
运行:
发送端:
接收端:
接收端或者绑定的ip设为0
转载于:https://www.cnblogs.com/pengdonglin137/archive/2013/03/16/2963464.html
TCP/IP 广播的发送和接收相关推荐
- Udp广播的发送和接收(iOS + AsyncUdpSocket)下篇
接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 ...
- TCP/IP 与 DBUS 发送数据速度对比 进程间通信
图片为测试每次发送长度 1024*1024 Byte数据的延时,每次间隔20毫秒,同一台电脑,WIN10系统,32G内存,24核心; 测试代码用QT自带例子修改. 结果: TCP/IP 延时30毫秒左 ...
- 硬件 TCP/IP 协议栈(SPI 发送命令字)
目录 全硬件的TCP/IP 协议栈简介 以太网接入单片机方案 以太网接口芯片CH395Q 简介 以太网接口芯片 CH395Q 命令简介 以太网接口芯片CH395Q 寄存器配置与使用 移植CH395Q ...
- UDP广播包发送与接收
1.数据发送端 #include "stdafx.h" #include <WinSock2.h> #include <stdio.h> #include ...
- linux TCP/IP L2层数据包接收流程,eth_rxnetif_receive_skb处理流程
linux TCP/IP L2 handle 流程, 基于Linux kernel3.14.
- Android源码分析之广播的发送和接收流程
说明:本文是基于Android6.0源码来分析的 概要 我的理解是,Android中的广播可以看为一种消息机制,用来在一定的条件下触发一些操纵,比如:网络状态的改变,熄屏,亮屏等等Android系统都 ...
- TCP/IP——广播和多播(组播)
一.引言 三种IP地址:单播地址.广播地址和组播地址.广播和多播仅应用于UDP(因为TCP是端对端的连接,无法实现一对多). 单播,一对一,目的地址是单个主机: 广播,一对全部,目的地址是局域网中的全 ...
- 服务器java 客户端c_Java客户端和C ++服务器通过TCP套接字发送和接收
我有一个C ++服务器和两个客户端(红宝石和Java).一切都在64位linux机器(java 1.7.0_17)上运行.ruby客户端可以正常工作,但是java版本会出现问题. 在Java中,我尝试 ...
- python写一个app接收摄像头传输的视频_如何使用Python中的tcp套接字发送和接收网络摄像头流?...
我正在尝试重新创建this project.我有一台服务器(我的电脑)和一台客户机(我的树莓皮).我所做的与最初的项目不同的是,我尝试使用一个简单的网络摄像头而不是一个覆盆子pi相机将图像从我的rpi ...
最新文章
- android 照片拼接长图_我才发现,微信里面有一个功能,能将手机照片自动拼成长图...
- pandas内置绘图_使用Pandas内置功能探索数据集
- c++判断字符是否为空格或数字
- mysql 两张表差集_mysql中两张表使用left join on 求差集详解
- mysql 最短路经_poj 3613 Cow Relays 经L边的最短路 | 学步园
- 【PHP源码】二维码生成api
- 显式锁(二)Lock接口与显示锁介绍
- 作为 Web 开发人员我踩过哪些技术的坑?
- USER_AGENT 知识
- 云原生技术的挑战是什么?
- MultiRow发现之旅(五)- MultiRow版俄罗斯方块(exe + 源码)
- android 自定义相机,Android应用开发之android 7自定义相机预览及拍照功能
- 恒生校招java笔试数据库语法_2015恒生电子校招笔试题
- Atiitt 知识图谱的艺术 艾提拉著 目录 1. 常见知识图谱的处理技术	1 2. 常用的公开知识图谱如DBpedia, Freebase, Yago,Openkg等	2 3. 构建知识图谱的方
- JS中变量存储在堆中还是栈中?(深入内存原理)
- 媒体领域AI能力测评,黑白图像上色、一键微笑哪家强
- 202个DIY及科技网站大集合
- 手机拨出等待时间长_手机打不出去电话怎么回事 一分钟轻松排查原因
- uniapp 判断手机网络状态
- 自动驾驶的前世今生,能否直破未来潮流
热门文章
- 你连原理都还没弄明白?java的基本单位
- 【深度学习入门到精通系列】进化策略 (Evolution Strategy)
- python【蓝桥杯vip练习题库】ADV-306输出三个整数的最大数
- ubuntu创建新用户名和密码以及查看删除用户
- 【深度学习笔记】ROC曲线 vs Precision-Recall曲线
- bindservice启动服务
- 算法训练 连续正整数的和 (枚举)
- arc0 oracle,ORA-01194错误恢复方法一
- 进阶学习(4.2) JVM 常用配置参数, GC 参数
- 网站优化过度后会出现哪些“后遗症”?悠着点~