开发者社区> 真爱无限> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

c++ windowsSocket通讯连接效时服务器并获取返回消息简单用例

简介: #include "stdafx.h" #include #include #include #include "resource.h" #include "MainDlg.
+关注继续查看
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <WINSOCK2.H>
#include "resource.h"
#include "MainDlg.h"
#define HIGHTIME 21968699
#define LOWTIME  4259332096 
/*
*/
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
		HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
		{
			SocketTest();
		}
        break;
        default:
		break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
void SocketTest()
{
////在连接中加上 WSOCK32.LIB
	WSADATA wsaData;
	//初始化Socket库
	WSAStartup(MAKEWORD(2,0),&wsaData);
	//创建
	SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	SOCKADDR_IN sa;
	sa.sin_family=AF_INET;
	//设置连接服务器端的端口
	sa.sin_port = htons(IPPORT_TIMESERVER);//端口号
	//218.107.63.213是ping smtp.163.com出来的

	sa.sin_addr.S_un.S_addr = inet_addr("218.107.63.213");//www.time.ac.cn-210.72.145.8

	if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
	{
		ShowError();
		return;
	}
/*
	//接收连接到的消息1
	TCHAR buff[256];
	ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
	recv(sock,buff,sizeof(buff)/sizeof(TCHAR),0);
	MessageBox(NULL,buff,"返回消息",MB_OK);
	//发消息1
	TCHAR msg[]="QUIT\n";
	send(sock,msg,sizeof(msg)/sizeof(TCHAR),0);
	ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
	recv(sock,buff,sizeof(buff)/sizeof(TCHAR),0);
	MessageBox(NULL,buff,"返回消息",MB_OK);
*/
	//接收连接到的消息2
	unsigned long ulTime=0;
	recv(sock,(char*)&ulTime,sizeof(unsigned long),0);
	ulTime=ntohl(ulTime);//把网络字节序转化为本机字节序
	TCHAR buff1[256]={0};
	wsprintf(buff1,"%i",ulTime);
	MessageBox(NULL,buff1,"返回消息",MB_OK);//获取到的时间不对,www.time.ac.cn有问题,直接放到 http://tool.chinaz.com/Tools/unixtime.aspx 转换都不对。
	////把unix时间转化为系统时间
	SYSTEMTIME st;
	UINT64 uiCurtime,uiBasetime,uiResult;
	uiBasetime=((UINT64)HIGHTIME<<32)+LOWTIME;
	uiCurtime=(UINT64)ulTime*(UINT64)10000000;
	uiResult=uiBasetime+uiCurtime;
	uiResult=uiBasetime;
	FileTimeToSystemTime((LPFILETIME)&uiResult,&st);
	TCHAR buff[256]={0};
	wsprintf(buff,"%d年%d月%d日 %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour+8,st.wMinute,st.wSecond);
	MessageBox(NULL,buff,"返回消息",MB_OK);
	//设置系统时间
	//SetSystemTime(&st);
	closesocket(sock);
	WSACleanup();

}
void ShowError()
{
TCHAR* lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区
			  FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
			  NULL,GetLastError(), //获取错误信息标识
			  MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言
			  (LPTSTR)&lpMsgBuf, //消息缓冲区
			  0,
			  NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR); 
}



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
远程连接Windows服务器
远程连接Windows服务器
140 0
远程连接 Windows 服务器
最近有小伙伴在群里买了云服务器 问题引出 大哥,忙吗?为什么连不上, 问清楚服务器类型之后就开始帮助他
84 0
使用pscp命令将windows系统里的文件传送到远程服务器
使用pscp命令将windows系统里的文件传送到远程服务器
46 0
windows搭建FTP服务器
如何在阿里云搭建FTP服务器
6380 0
Windows下安装NTP服务器
原文:Windows下安装NTP服务器 NTP服务器介绍 NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒)。
2257 0
Windows Socket 编程_ 简单的服务器/客户端程序 .
一。程序运行效果图 二。程序源代码 三。程序设计相关基础知识     1.计算机网络    2.IP地址    3.协议    4.网络体系结构    5.TCP/IP体系结构与特点    6.客户机/服务器模式    7.TCP/IP特点    8.套接字的引入    9.面向 连接/无连接 的套接字的系统调用时序图/流程图   一。
1185 0
Windows Socket 编程_单个服务器对多个客户端简单通讯 .
单个服务器对多个客户端程序: 一。简要说明 二。查看效果 三。编写思路 四。程序源代码 五。存在问题   一。简要说明:  程序名为:TcpSocketOneServerToMulClient  程序功能:实现单个服务器对多个客户端通讯功能的小程序。
1169 0
+关注
真爱无限
主要技术.net sqlserver mysql。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
对象的生命期管理
立即下载
继承与功能组合
立即下载
移动与复制
立即下载