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