Windows Socket 客户端

开发环境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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值