#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include<fcntl.h>
#include<errno.h>
#include<stdlib.h>
#define SERVER_IP "192.168.0.103"
int main(int argc, char *argv[])
{
unsigned int client_sockfd;
int len,len1;
struct sockaddr_in remote_addr; //服务器端网络地址结构体
int sin_size;
char buf[BUFSIZ],recvbuf[BUFSIZ]; //数据传送的缓冲区
memset(&remote_addr,0,sizeof(remote_addr)); //数据初始化--清零
remote_addr.sin_family=AF_INET; //设置为IP通信
remote_addr.sin_addr.s_addr=inet_addr(SERVER_IP);//服务器IP地址
remote_addr.sin_port=htons(8000); //服务器端口号
/*创建客户端套接字--IPv4协议,面向无连接通信,UDP协议*/
if((client_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("socket error");
return 1;
}
/*if(bind(client_sockfd, (struct sockaddr *)&remote_addr, sizeof(remote_addr))<0)
{
printf("bind error !\n");
// close(remote_addr);
return 0;
}*/
int begin,end;
//strcpy(buf,"ni hao"); // 发送的内容
sin_size=sizeof(struct sockaddr_in);
int *begin2;
begin2 = (int *)malloc(sizeof(int));
/*向服务器发送数据包*/
while(1)
{
begin=clock();
memcpy(buf,&begin,sizeof(begin)); // 发送的内容
if((len=sendto(client_sockfd,buf,4,0,(struct sockaddr *)&remote_addr,sin_size))<0)
{
perror("recvfrom");
return 1;
}
else
{
printf("send datatime=%dms\n",begin);
}
memset(recvbuf,0,sizeof(recvbuf));//MSG_DONTWAIT
//这里是获得地址,所以要加上&,但是发送不用
if((len1=recvfrom(client_sockfd, recvbuf, sizeof(recvbuf), 0, (struct sockaddr *)&remote_addr,&sin_size))>0)
{
memcpy(begin2,&recvbuf[0],4);
printf("recv data:%dms\n",*begin2);
end=clock();
printf("end is %dms\n",end);
printf("time is %dms\n",end-*begin2);
}
else
printf("error:%d\n",len1);
}
/*关闭套接字*/
close(client_sockfd);
return 0;
}
rtt.zip_UDP socket_Windows编程_linux_跨平台通信
版权申诉
198 浏览量
2022-09-21
21:03:52
上传
评论
收藏 2KB ZIP 举报
钱亚锋
- 粉丝: 86
- 资源: 1万+
最新资源
- fdgsfdgfdsgsf
- 基于CodeMirror5实现的mybatis+sql提示扩展功能,主要是用于在线设计开发场景中的动态sql部分.zip
- 计算机毕业设计-aSP.NET某中学学生成绩管理系统的设计(源代码+)-毕设源码实例.zip
- springboot集成mybatis动态sql.zip
- mybatis中的动态sql, 涉及 where trim set if foreach等
- 简单- 快递运输(Java & JS & Python & C).html
- mybatis框架 更改ems系统,使用动态sql等.zip
- 易语言工具条下拉菜单实现
- Mybatis动态SQL高级映射.zip
- 源码esp8266开发板机智云机智云智能灯
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0