UDP时间更新服务程序

原创 2016年08月28日 23:18:07

UDP时间更新服务程序


 http://qzher.com/?p=647


网络编程,最好采用两台电脑,

或者一台电脑,再开个虚拟机,虚拟机采用网络桥接模式

 

 

特点:

发消息方一直向指定IP发送报时消息

收方一上线就能得到发来的即时消息 (未上线的消息全被抛弃)

若收方上线期间发消息方关闭收方也一直等待发消息方的消息,

只要发消息方一上线发送消息,收方可以继续接收发来的消息

 

应用比如视频直播,游戏画面等的传输 

 

 

 


 

源码:

 

 

#include <stdio.h>

#include<iostream>

#include <Winsock2.h>

#include <time.h>

#pragma comment(lib,"ws2_32.lib")

#define  BUF_SIZE 64

 

int main()

{

WSADATA wsadata;

int nRes = 0;

nRes = WSAStartup(MAKEWORD(2, 3), &wsadata);

if (0 != nRes)

{

return 0;

}

 

SOCKET sockSend;

sockSend = socket(AF_INETSOCK_DGRAMIPPROTO_UDP);

if (INVALID_SOCKET == sockSend)

{

WSACleanup();

return 0;

}

 

sockaddr_in addrRecv;

addrRecv.sin_family = AF_INET;

addrRecv.sin_port = htons(9090);

// 向222的IP发送数据

addrRecv.sin_addr.S_un.S_addr = inet_addr("192.168.1.222");

 

// 就算绑定错误也不用管(这里应该也会绑定出错)

nRes = bind(sockSend, (sockaddr*)&addrRecvsizeof(sockaddr_in));

printf("—-时间服务器已启动—–\n ");

 

int nSendLen = 0;

struct tm tLocal;

time_t  t = time(NULL);

char chTime[64];

int nLen = sizeof(sockaddr_in);

 

while (true)

{

// 获取当前时间并格式化

t = time(NULL);

localtime_s(&tLocal, &t);

sprintf_s(chTime"%s"asctime(&tLocal));

 

// 向222发送时间

nSendLen = sendto(sockSendchTimestrlen(chTime), 0, (sockaddr*)&addrRecvnLen);

Sleep(1000);

}

 

closesocket(sockSend);

WSACleanup();

std::cout << "server stoped! " << std::endl;

 

return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <stdio.h>

#include<iostream>

#include <Winsock2.h>

#pragma comment(lib,"ws2_32.lib")

#define  BUF_SIZE 64

 

int main()

{

WSADATA wsadata;

int nRes = 0;

nRes = WSAStartup(MAKEWORD(2, 2), &wsadata);

if (0 != nRes)

{

return 0;

}

 

SOCKET sockTimeRecv;

sockTimeRecv = socket(AF_INETSOCK_DGRAMIPPROTO_UDP);

if (INVALID_SOCKET == sockTimeRecv)

{

WSACleanup();

return 0;

}

 

sockaddr_in addrRecv;

addrRecv.sin_family = AF_INET;

addrRecv.sin_port = htons(9090);

addrRecv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

 

nRes = bind(sockTimeRecv, (sockaddr*)&addrRecvsizeof(sockaddr_in));

 

 

char chBufRecv[BUF_SIZE] = { "0" };

int nLen = sizeof(sockaddr_in);

printf("—-qzher.com start to recv data—–\n ");

 

charpChClientAddr = nullptr;

int nRecvLen = 0;

 

while (true)

{

nRecvLen = recvfrom(sockTimeRecvchBufRecvBUF_SIZE, 0,

(sockaddr*)&addrRecv, &nLen);

 

if (strlen(chBufRecv) > 0)

{

pChClientAddr = inet_ntoa(addrRecv.sin_addr);

printf("%s send:———%s\n"pChClientAddrchBufRecv);

}

}

 

closesocket(sockTimeRecv);

WSACleanup();

std::cout << "server stoped! " << std::endl;

 

return 0;

}


源码下载: (VS2015)  http://download.csdn.net/detail/sinat_35523212/9615378

版权声明:更多文件,请访问 qzher.com 致力于良心IT培训,深圳QQ群:326023167

Etherpeek监听UDP报文时间戳获取

经常需要对UDP网络包进行抓包分析,常用的
  • ljbsdu
  • ljbsdu
  • 2014年07月06日 16:38
  • 1504

基于UDP的nio日志服务器

自己做的一个udp日志服务器,请多指教。 服务器启动类: /** * 日志信息监听服务 * 配置文件在jar包内mongo.properties * @author Administrato...
  • han_dada
  • han_dada
  • 2017年02月24日 16:22
  • 347

python学习:编写TCP服务器&UDP服务器

python学习:编写TCP服务器&UDP服务器本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境:主机:WIN10python版本:3.4开发环境:...
  • jdh99
  • jdh99
  • 2016年07月05日 10:26
  • 1639

socket 网络编程快速入门(一)教你编写基于UDP/TCP的服务(客户端)通信

因为UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程。 socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,因为这些函数的结构往往比较复杂,参数...
  • NK_test
  • NK_test
  • 2015年08月17日 22:23
  • 5415

Linux下使用UDP做心跳检测(断线检测)

本文介绍了心跳包机制、应用场景、两种实现的方法(TCP SO_KEEPALIVE 和应用层方式),并对两种方法的优缺点进行比较,最后结合实际情况,给出相应的客户端和服务器实例程序。...
  • qq_14976351
  • qq_14976351
  • 2016年12月07日 11:57
  • 1936

【windows socket+UDP服务器客户端】

Windows Socket+TCP服务器客户端      Winsock是 Windows下套接字标准。          1.UDP socket编程:          UDP(用户数据报协议)...
  • Jiangweihll
  • Jiangweihll
  • 2014年05月09日 17:48
  • 6996

UDP的超时设置

最近在做项目的时候,遇到一个问题:就是阻塞模式下的UDP在接收(recvfrom)的时候,如果没有收到数据包,程序会一直阻塞。 在Windows下可以通过设置超时时间来解决这个问题。struct t...
  • zhengmian511
  • zhengmian511
  • 2016年06月23日 09:40
  • 615

基于UDP的简单聊天程序

学习网络程序知识,记一下笔记
  • zhonghua123
  • zhonghua123
  • 2014年04月21日 14:12
  • 1994

利用UDP实现用户聊天程序

UDP是面向非连接的,UDP传输的是数据报只负责传输信息,不保证信息一定收到,虽然安全性不如TCP(面向连接、用Socket进行通信),但是性能较好。 从简单到复杂,首先简单介绍一下怎么利用UDP实...
  • Dkangel
  • Dkangel
  • 2017年04月08日 01:24
  • 1303

UDP客户/服务器

一般来说,大多数TCP服务器是并发的,而大多数UDP服务器是迭代的(单个进程/线程就得处理所有客户)。 UDP套接字调用connect(不同于...
  • yss28
  • yss28
  • 2017年01月19日 17:12
  • 379
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UDP时间更新服务程序
举报原因:
原因补充:

(最多只允许输入30个字)