UNICODE 工程 winet_addr的代码


unsigned long winet_addr ( wchar_t *ipv4str )
{
	unsigned long addr = 0L;
	wchar_t *p = NULL;
	wchar_t tok = L'.';
	int i = 0;
	p = wcstok(ipv4str, &tok);
	while ( NULL != p )
	{
	addr += (_wtoi(p)) << (8*i);
	p = wcstok(NULL, &tok);
	i++;
	}
	p = NULL;
	return(addr);
}
#define Char2WChar(lpMultiByteStr,cbMultiByte,lpWideCharStr,cbWideChar) \
MultiByteToWideChar(CP_ACP,0,lpMultiByteStr,cbMultiByte,lpWideCharStr,cbWideChar)

#define WChar2Char(lpWideCharStr,cbWideChar,lpMultiByteStr,cbMultiByte) \
WideCharToMultiByte(CP_ACP,0,lpWideCharStr,cbWideChar,lpMultiByteStr,cbMultiByte,NULL,NULL)

void client(CString& 产线)
{
	//加载套接字
	WSADATA wsaData;
	char buff[4096];
	memset(buff, 0, sizeof(buff));
 
	if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
	{
		TRACE("Failed to load Winsock");
		return;
	}
 
	int port=::GetPrivateProfileInt(L"NETWORK",L"ServerPort",0,L"c:\\server.ini");
	
	wchar_t ip[16];
	DWORD num=0;
	num=GetPrivateProfileString(L"NETWORK",L"ServerIP",L"", ip,sizeof(ip), L"c:\\server.ini");
	

	SOCKADDR_IN addrSrv;
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(port);
	addrSrv.sin_addr.S_un.S_addr = winet_addr(ip);inet_addr(ip);/char
 
	//创建套接字
	SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
	if(SOCKET_ERROR == sockClient){
		TRACE("Socket() error:%d", WSAGetLastError());
		return;
	}
 
	//向服务器发出连接请求
	if(connect(sockClient, (struct  sockaddr*)&addrSrv, sizeof(addrSrv)) == INVALID_SOCKET){
		TRACE("Connect failed:%d", WSAGetLastError());
		return;
	}else
	{
		//接收数据
		//recv(sockClient, buff, sizeof(buff), 0);
		//TRACE("%s\n", buff);
	}
 
	//发送数据
//	SendStr aSendBuf;
	initSendStr(产线);
	char OutBuf[4096];

	WChar2Char(SendStr.GetBuffer(),-1,OutBuf,SendStr.GetLength());



	//strcpy(buff , "hello, this is a Client....");
	//int ret=send(sockClient, SendStr.GetBuffer(), SendStr.GetLength(), 0);
	int ret=send(sockClient, OutBuf, strlen(OutBuf), 0);
	TRACE("ret=%d, OutBuf=%s\n", OutBuf);
	if(ret < 0)
	{
		TRACE("send%d\n", GetLastError());
	}

	//接收数据
	ret=recv(sockClient, buff, sizeof(buff), 0);
	if(ret < 0)
	{
		TRACE("recv%d\n", GetLastError());
	}
	TRACE("ret=%d, buff=%s\n",ret, buff);



	for(int i=0; i<sizeof(buff); i++)
	{
		if(buff[i]=='&')
		{
			buff[i]=' ';
		}
	}
	wchar_t wbuff[4096]={0};
	//WChar2Char(SendStr.GetBuffer(),-1,OutBuf,SendStr.GetLength());
	Char2WChar(buff,-1,wbuff,sizeof(buff));



	RecvBuf aRecvbuf;
	char fe[3],ff[3];
	//FE  1  http://c.ytmilk.cn:81/tcode.jsp?id=  A  303  P1  1691916  0  00001  0  FF
	swscanf(wbuff,L"%s\
		 %c                    %s              %c               %s             %s\
		  %s                    %c               %s                      %c\
		 %s",
		fe,
		&aRecvbuf.数据类型,aRecvbuf.网址,&aRecvbuf.产地,aRecvbuf.产品简码, aRecvbuf.产线,
		aRecvbuf.产品ID, &aRecvbuf.发送标识, aRecvbuf.起始流水号, &aRecvbuf.区分标识
		, ff);
	init二维码信息(aRecvbuf);

	//sscanf(buff,"FE&&1&&http://c.ytmilk.cn:81/tcode.jsp?id=&&A&&303&&P1&&1691916&&0&&00001&&0&&FF", 
	TRACE("\ninit二维码信息:%s",二维码信息.GetBuffer());

 
	//关闭套接字
	closesocket(sockClient);
	WSACleanup();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值