udp--demo
来源:互联网 发布:现在学什么编程 编辑:程序博客网 时间:2024/05/20 02:30
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/wait.h> #include<netinet/in.h> #include<arpa/inet.h> #include<errno.h>#include<pthread.h>#define serverBroadPort 9989struct dataOfBroadInit{int broadFd;struct sockaddr_in serviceAddr;};//struct dataOfBroadInit *communData;static struct dataOfBroadInit *initData;static int broadCast(){int recvbytes=0,addrLen=sizeof(struct sockaddr_in);;char msg[128] = "I am broadCast message from client!";char recvbuf[128];if((sendto(initData->broadFd,msg,strlen(msg),0,(struct sockaddr *)&initData->serviceAddr,sizeof(struct sockaddr))) == -1){ printf("sendBroad fail:%s\n",strerror(errno)); return -1; } if((recvbytes = recvfrom(initData->broadFd, recvbuf,128,0,(struct sockaddr *)&initData->serviceAddr, &addrLen)) != -1){ recvbuf[recvbytes] = '\0'; printf("receive a messgse:%s\n", recvbuf); printf("receive from:%s:%d\n\n\n\n",inet_ntoa(initData->serviceAddr.sin_addr),ntohs(initData->serviceAddr.sin_port)); }else{ printf("recvfrom fail:%s\n",strerror(errno)); return -1; }printf("broadcast Over!\n");return 0;}int broadInit(void){//struct dataOfBroadInit *initData=NULL;initData=NULL;int optval=1;initData = malloc(sizeof(struct dataOfBroadInit));if(NULL==initData){printf("malloc err: %s\n",strerror(errno));return -1;}memset(initData,0,sizeof(struct dataOfBroadInit));if((initData->broadFd = socket(PF_INET, SOCK_DGRAM, 0)) == -1){ printf("get socketFd fail\n"); return -1; } setsockopt(initData->broadFd, SOL_SOCKET, SO_BROADCAST | SO_REUSEADDR, &optval, sizeof(int));bzero(&initData->serviceAddr,sizeof(struct sockaddr_in)); initData->serviceAddr.sin_family = AF_INET; printf("cc\n"); initData->serviceAddr.sin_addr.s_addr = inet_addr("255.255.255.255"); initData->serviceAddr.sin_port = htons(serverBroadPort); if(broadCast() != 0){printf("broadCast err\n");return -1;}return 0;}int nativeSendCmd(const int cmd){if(cmd!=111&&cmd!=112){printf("cmd err\n");return -1;}if((sendto(initData->broadFd,&cmd,sizeof(int),0,(struct sockaddr *)&initData->serviceAddr,sizeof(struct sockaddr))) == -1){ printf("sendMesg fail:%s\n",strerror(errno)); return -1; } return 0;}int main(){ //pthread_t pid;//向服务器发送广播/*communData=NULL;communData = broadInit();if(NULL==communData){printf("broadInit err:%s\n",strerror(errno));return -1;}printf("broadcast Over!\n");//已建立连接,开始交流数据//nativeWriteCmd(112);*/broadInit();return 0;}/*************************************************//service_端**************************************************/#include<stdlib.h> #include<stdio.h> #include<string.h> #include<sys/types.h> #include<netinet/in.h> #include<netdb.h> #include<sys/socket.h> #include<sys/wait.h> #include<arpa/inet.h> #include<errno.h>#define serverBroadPort 9989int main(void){ int sockListen; char msg[128] = "I am message from service to u!"; if((sockListen = socket(AF_INET, SOCK_DGRAM, 0)) == -1){ printf("socket fail\n"); return -1; } int set = 1; setsockopt(sockListen, SOL_SOCKET, SO_REUSEADDR, &set, sizeof(int)); struct sockaddr_in recvAddr; memset(&recvAddr, 0, sizeof(struct sockaddr_in)); recvAddr.sin_family = AF_INET; recvAddr.sin_port = htons(serverBroadPort); recvAddr.sin_addr.s_addr = INADDR_ANY; if(bind(sockListen, (struct sockaddr *)&recvAddr, sizeof(struct sockaddr)) == -1){ printf("bind fail\n"); return -1; } int recvbytes; char recvbuf[128]; int addrLen = sizeof(struct sockaddr_in); if((recvbytes = recvfrom(sockListen, recvbuf,128,0,(struct sockaddr *)&recvAddr, &addrLen)) != -1){ recvbuf[recvbytes] = '\0'; printf("receive a broadCast messgse:%s\n", recvbuf); printf("receive from:%s:%d\n\n\n\n",inet_ntoa(recvAddr.sin_addr),ntohs(recvAddr.sin_port)); }else{ printf("recvfrom fail\n"); }int sendRet;if((sendRet = sendto(sockListen,msg,strlen(msg),0,(struct sockaddr *)&recvAddr,sizeof(struct sockaddr))) == -1){ printf("sendToClient fail:%s\n",strerror(errno)); return -1; }printf("sucessfully send mesg to Client\n\n"); close(sockListen); return 0; }
0 0
- UDP Demo
- udp--demo
- Udp实现通信DEMO
- UDP Socket Demo 总结
- android udp demo
- Android UDP demo
- udp服务器端demo
- Netty UDP demo
- UDP 最简单DEMO
- android udp demo
- STM32F4 LWIP UDP Demo
- udp连接通信demo
- Android下UDP通信DEMO
- java udp协议请求demo
- winsock实现UDP通信DEMO
- TCP UDP超时代码段demo
- Socket(UDP)通信winform demo
- 服务端和客户端UDP通信demo
- 重载遇上函数指针
- Ionic2 隐藏状态栏,全屏, 禁止旋转,保持横屏
- 《第一行代码》学习记录(四)
- C++ 如何判断一个int数据的某一位是否为0
- node.js学习(十二、ReactNative开发环境搭建)
- udp--demo
- MySQL常用函数
- C语言单元测试框架 -CUnit
- [安全] AD域解释 , 域和组的区别?
- 斐波那列数列
- 设计模式---享元模式(C++实现)
- Python 绘图demo
- quick = cocos2dx
- override覆盖