#include< stdio.h >
#include< string.h >
#include< winsock.h >
#include< windows.h >
#include
#pragma comment( lib, "ws2_32.lib" )
#define PORT 2046
#define BACKLOG 10
#define TRUE 1
#define MAXDATASIZE 1000
using namespace std;
//VOID CALLBACK my_timer();
void main( void )
{
int iServerSock;
int m=0;
//
全局变量接受服务器发送过来的充值时间
// int iClientSock;
int addr_len;
int numbytes;
char buf[ MAXDATASIZE ];
//
定义接受缓存
struct sockaddr_in ServerAddr;
//
定义IP的结构
struct sockaddr_in ClientAddr;
WSADATA WSAData;
if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )
//
启动套接字
{
printf( "initializationing error!\n" );
WSACleanup( );
//
关闭套接字
exit( 0 );
}
iServerSock = socket( AF_INET, SOCK_DGRAM, 0 );
//
创建套接字
if( iServerSock == INVALID_SOCKET )
{
printf( "
创建套接字失败!\n" );
WSACleanup( );
//
关闭套接字
exit( 0 );
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons( PORT );
//
监视的端口号
ServerAddr.sin_addr.s_addr = INADDR_ANY;
//
本地IP
memset( & ( ServerAddr.sin_zero ), 0, sizeof( ServerAddr.sin_zero ) );
if( bind( iServerSock, ( struct sockaddr * )&ServerAddr, sizeof( struct sockaddr ) ) == -1 )
//
绑定套接字
{
printf( "bind
调用失败!\n" );
WSACleanup( );
exit( 0 );
}
addr_len = sizeof( struct sockaddr );
numbytes = recvfrom( iServerSock, buf, MAXDATASIZE, 0, ( struct sockaddr * ) & ClientAddr, &addr_len );
//
接受数据
if( numbytes == -1 )
{
printf( "recvfrom
调用失败!\n" );
WSACleanup( );
exit( 0 );
}
buf[ numbytes ] = '\0';
printf( "packet contains %s\n", buf );
m=int(buf);
//
将字符类型转换为整型
::SetTimer(NULL,0,1000,0);
//
调用系统时间开始计时
MSG msg;
while(GetMessage(&msg,0,0,0))
//
查找的是本线程消息队列及属于本线程的所有窗口的消息
{
printf("
你当前的余额为%d\n",m);
m=m--;
if(m==10)
printf("
系统在10秒钟后关机\n");
if(m==0)
{
printf("
系统马上关机\n");
system("shutdown -s ");
}
}
closesocket( iServerSock );
WSACleanup( );
}