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); 
}



相关文章
|
1月前
|
编解码 Linux C语言
探索C++与Live555实现RTSP服务器的艺术(一)
探索C++与Live555实现RTSP服务器的艺术
82 1
|
1月前
|
运维 Linux Nacos
nacos常见问题之远程访问不报错放到服务器上nacos连接超时如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
59 1
|
20天前
|
网络协议 Python
pythonTCP客户端编程连接服务器
【4月更文挑战第6天】本教程介绍了TCP客户端如何连接服务器,包括指定服务器IP和端口、发送连接请求、处理异常、进行数据传输及关闭连接。在Python中,使用`socket`模块创建Socket对象,然后通过`connect()`方法尝试连接服务器 `(server_ip, server_port)`。成功连接后,利用`send()`和`recv()`进行数据交互,记得在通信完成后调用`close()`关闭连接,确保资源释放和程序稳定性。
|
2天前
|
监控 Linux 网络安全
Linux服务器如何查询连接服务器的IP
【4月更文挑战第15天】Linux服务器如何查询连接服务器的IP
9 1
|
7天前
|
网络协议 安全 Linux
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
|
24天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
125 3
|
1月前
|
存储 网络协议 Java
【TCP 连接手段】C++编程视角下的TCP:短连接与长连接深度解析
【TCP 连接手段】C++编程视角下的TCP:短连接与长连接深度解析
59 1
|
1月前
|
编解码 C++ 流计算
探索C++与Live555实现RTSP服务器的艺术(三)
探索C++与Live555实现RTSP服务器的艺术
24 1
|
1月前
|
存储 编解码 算法
探索C++与Live555实现RTSP服务器的艺术(二)
探索C++与Live555实现RTSP服务器的艺术
44 1
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客

热门文章

最新文章