C socket udp方式发数据
#define HOST_SERVER_IP "192.168.3.35"
#define HOST_PORT 9501
#define SLEEP_TIME 1
#define LOOP_TIME 3
#define DATA_SIZE 80 int judge_socket_exist()
{
int loop_time = ;
fd_set send_data_flag;
static int socket_fd = -; while()
{
if (socket_fd <= )
{
socket_fd = socket(AF_INET, SOCK_DGRAM, );
loop_time++;
} if (socket_fd > )
{
FD_ZERO(&send_data_flag);
FD_SET(socket_fd, &send_data_flag);
FD_SET(, &send_data_flag); //check socket is effective
if (select(socket_fd+, NULL, &send_data_flag, NULL, ) > )
{
break;
}
else
{
socket_fd = socket(AF_INET, SOCK_DGRAM, );
loop_time++;
}
} if (loop_time > LOOP_TIME)
{
return -;
} sleep(SLEEP_TIME);
} return socket_fd;
} int gsh_post_client(const char* sn, const char* ip)
{
if (NULL == sn || NULL == ip)
{
return -;
} int loop_time = ; //loop time of fail execute
int send_data_length = ; //length of sending data
int select_err = -; //flag of select function back value
int socket_fd = judge_socket_exist(); //set socket flag, socket not close
struct timeval select_wait = {, }; //select function wait time
char text[BUFSIZ];
char send_data_buffer[DATA_SIZE]; //buffer of sending data
struct sockaddr_in socket_addr; //socket address of server ip and port
fd_set send_data_flag; //select function send data flag if (socket_fd <= )
{
fprintf(stderr, "establish socket fail");
return -;
} //initialize socket data
bzero(&socket_addr, sizeof(socket_addr));
socket_addr.sin_family = AF_INET;
socket_addr.sin_port = htons(HOST_PORT);
inet_aton(HOST_SERVER_IP, &socket_addr.sin_addr); //initialize request data
memset(&send_data_buffer, , sizeof(send_data_buffer));
strcat(send_data_buffer, "sn=");
strcat(send_data_buffer, sn);
strcat(send_data_buffer, "&ip=");
strcat(send_data_buffer, ip); while() //for no-blocking
{
if (loop_time > LOOP_TIME)
{
fprintf(stderr, "send data fail\n");
return -;
} FD_ZERO(&send_data_flag);
FD_SET(socket_fd, &send_data_flag);
FD_SET(, &send_data_flag); select_err = select(socket_fd+, NULL, &send_data_flag, NULL, &select_wait); if (select_err <= )
{
loop_time++;
}
else
{
if (FD_ISSET(socket_fd, &send_data_flag))
{
loop_time = ;
FD_CLR(socket_fd, &send_data_flag); while(send_data_length < strlen(send_data_buffer))
{
send_data_length = sendto(socket_fd, send_data_buffer, strlen(send_data_buffer), , (struct sockaddr *)&socket_addr, sizeof(socket_addr)); if (send_data_length <= )
{
fprintf(stderr, "sending data fail\n");
return -;
} if (loop_time > LOOP_TIME)
{
fprintf(stderr, "length of sending data shorten than data\n");
return -;
} if (send_data_length < strlen(send_data_buffer))
{
loop_time++;
sleep(SLEEP_TIME);
}
}
recvfrom(socket_fd,text,sizeof(text), , NULL, NULL);
printf("%s", text);
break;
}
else
{
loop_time++;
}
} sleep(SLEEP_TIME);
} return ;
}
C socket udp方式发数据的更多相关文章
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
- Nginx学习笔记(四) 源码分析&socket/UDP/shmem
源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_socket.h&Ngx_s ...
- udp协议的数据接收与发送的代码
我想基于lwIP协议中的UDP协议,用单片机做一个服务器,接受电脑的指令然后返回数据.以下是我的代码 /************************************************ ...
- 消息队列、socket(UDP)实现简易聊天系统
前言: 最近在学进程间通信,所以做了一个小项目练习一下.主要用消息队列和socket(UDP)实现这个系统,并数据库存储数据,对C语言操作数据库不熟悉的可以参照我的这篇博客:https://www.c ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- UDP收/发广播包原理及步骤
原文链接地址:http://www.2cto.com/net/201311/254834.html UDP收/发广播包原理及步骤 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要 ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- Android(java)学习笔记80:UDP协议发送数据
UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; import java.io.IOException; import java.net. ...
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源 UDP协议接 ...
随机推荐
- [转]JSONObject与JSONArray的使用
http://www.cnblogs.com/xwdreamer/archive/2011/12/16/2296904.html 参考文献: http://blog.csdn.net/huangwuy ...
- 3d 人物残像
前言: gameunity 框架 还在继续完善中,0.2版本将会是一次 重大的里程碑. 正文: 哈哈,大家一定流汗了吧.请原谅我为自己代言. 好了,今天我要讲的是 3d人物残像. 首先我来说下 目前 ...
- 模版引擎Handlebars语法(1)
<script src="handlebars.js"></script></head><body> <div id=&quo ...
- Lucene.NET中Field.Index 和 Field.Store的几种属性的用法
转载自 http://blog.csdn.net/yja886/article/details/6612069 lucene在doc.add(new Field("content" ...
- POJ 3307 Smart Sister
先找出所有的数,排序,然后o(1)效率询问 #include<cstdio> #include<cstring> #include<cmath> #include& ...
- dage手法之 头部和banner ad tpl_header
<div class="top2"> <?php if ($current_page_base == 'index' || $current_page_base ...
- 困扰你的private static final long serialVersionUID
很多时候一个新手在写代码的时候,往往你的IDE就会告诉你一个警告 然后你点击处理这个警告之后,它就会默认给你的类生成一个 private static final long serialVersion ...
- nginx及php版本号隐藏
配置完一台服务器后,并不是就可以高枕无忧了,前不久刚刚爆发的PHP 5.3.9版本的漏洞也搞得人心惶惶,所以说经常关注安全公告并及时升级服务器也是必要的.一般来说,黑客攻击服务器的首要步骤就是收集信息 ...
- UIImage将图片写入本地相册
UIImageWriteToSavedPhotosAlbum(<#UIImage *image#>, <#id completionTarget#>, <#SEL com ...
- 阶乘相关<同余与模算术>
题意: 题目很简明: 令S[n]=1*1!+2*2!+3*3!+4*4!+....+n*n! 求S[n]%10000007 多组测试数据 每组一个n n的范围:1<=n<=1000000 ...