开发环境vs2005,开发语言vc++.net。
用vs2005编写程序员时,你要记得引入ws2_32.lib,否则会报LNK2019的错误!下面的程序是一个模拟了终端发报文给平台小程序,有兴趣的可以参考下。
// DemoTerminal.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <winsock.h>
#include <iostream>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int SignInDataLen=148;
unsigned char SignInData[]={
0x4C,0x52,0x49,0x00,0x1C,0x01,0x00,0x03,0x71,0x67,0x33,0x36,0x82,0x00,0x00,0x00,
0x00,0x03,0x83,0x34,0x12,0x58,0x00,0x09,0x49,0x00,0x06,0x00,0x00,0x00,0x82,0x8F,
0xD9,0x60,0x00,0x07,0x00,0x00,0x01,0x60,0x60,0x60,0x60,0x60,0x60,0x38,0x38,0x38,
0x30,0x32,0x39,0x35,0x32,0x34,0x90,0x01,0x00,0x20,0x18,0x08,0x04,0x00,0xC0,0x04,
0x01,0x00,0x00,0x00,0x13,0x46,0x51,0x20,0x13,0x08,0x07,0x01,0x81,0x00,0x10,0x13,
0x05,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x88,0x80,0x29,0x52,0x44,0x64,0x01,0x25,0x18,
0x00,0x01,0x00,0x16,0x30,0x30,0x32,0x43,0x34,0x38,0x37,0x41,0x37,0x41,0x41,0x36,
0x42,0x45,0x38,0x36,0x71,0x06,0xB0,0xD1,0xAB,0x81,0x6B,0x38,0x24,0x06,0xAF,0x4F,
0x82,0xCA,0x61,0xA3
};
int ConsumeDataLen=200;
unsigned char ComsumeData[]={
0x4C,0x52,0x49,0x00,0x1C,0x01,0x00,0x03,0x71,0x67,0x33,0x36,0x82,0x00,0x00,0x00,
0x00,0x03,0x83,0x34,0x12,0x58,0x00,0x09,0x49,0x00,0x06,0x00,0x00,0x00,0x82,0x8F,
0xD9,0x60,0x00,0x07,0x00,0x00,0x61,0x31,0x00,0x31,0x01,0x01,0x38,0x38,0x38,0x30,
0x32,0x39,0x35,0x32,0x34,0x34,0x91,0x02,0x00,0x70,0x38,0x04,0xC0,0x30,0xC0,0x98,
0x11,0x19,0x62,0x28,0x58,0x01,0x99,0x00,0x19,0x93,0x73,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x45,0x00,0x00,0x00,0x00,0x21,0x13,0x50,0x33,0x08,0x07,0x02,0x10,0x00,
0x12,0x37,0x62,0x28,0x58,0x01,0x99,0x00,0x19,0x93,0x73,0x7D,0x49,0x12,0x12,0x00,
0x19,0x95,0x83,0x47,0x40,0x00,0x28,0x12,0x34,0x56,0x78,0x90,0x12,0x34,0x56,0x78,
0x90,0x12,0x34,0x56,0x84,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x35,0x36,0xAF,
0xEA,0xD9,0x9A,0xCA,0x3E,0x6B,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x14,0x22,0x00,0x00,0x01,0x00,0x05,0x01,0x4B,0xB2,0x72,0xDB,0xD9,0xA0,0x7C,0x89,
0x48,0x55,0x47,0xBD,0x9E,0xB2,0x1E,0x3C
};
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int port=10987;
char *IP="10.0.66.231";
WSAStartup(MAKEWORD(2,2),&wsaData);
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(port);
ServerAddr.sin_addr.S_un.S_addr=inet_addr(IP);
if(connect(s,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr))!=0)
{
printf("Connect to server failed!\n");
return 0;
}
printf("Connect to server success!\n");
printf("输入1签到,2消费,0退出\n");
int n,len;
scanf_s("%d",&n);
while(n!=0)
{
if(n==1)
{
len=sendto(s,(const char *)SignInData,SignInDataLen,0,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
printf("发送了%d个字节\n",len);
}
if(n==2)
{
sendto(s,(const char *)ComsumeData,ConsumeDataLen,0,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr));
printf("发送消费报文\n");
}
scanf_s("%d",&n);
}
system("pause");
closesocket(s);
WSACleanup();
return 0;
}