//---------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
#include <stdio.h>
#include "winsock2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------int ReadData(SOCKET client,char* buffer,int iNum)
{
fd_set ReadFds;
struct timeval timeout;
unsigned long lArgp=1;
int iBytesRead,iRet; timeout.tv_sec=5;
timeout.tv_usec=0; iBytesRead=0;
while(iBytesRead<iNum)
{
lArgp=1;
ioctlsocket(client,FIONBIO,&lArgp);
FD_ZERO(&ReadFds);
FD_SET(client,&ReadFds);
iRet=select(client+1,&ReadFds,NULL,NULL,&timeout);
if((iRet==0)||(iRet==SOCKET_ERROR))
{
closesocket(client);
return -1;
}
if(!FD_ISSET(client,&ReadFds))
{
closesocket(client);
return -1;
}
lArgp=0;
ioctlsocket(client,FIONBIO,&lArgp); iRet=recv(client,(char*)&(buffer[iBytesRead]),iNum-iBytesRead,0);
if(iRet==0)
{
closesocket(client);
return 1;
}else if(iRet==SOCKET_ERROR)
{
closesocket(client);
return 2;
}
iBytesRead+=iRet;
}
return 0;
}int SendData(SOCKET client,char* buffer,int iNum)
{
int iIndex,iRet;
iIndex=0;
while(iNum>0)
{
iRet=send(client,&buffer[iIndex],iNum,0);
if(iRet==0)
{
closesocket(client);
return 1;
}else if(iRet==SOCKET_ERROR)
{
closesocket(client);
return 2;
}
iNum-=iRet;
iIndex+=iRet;
}
return 0;
}
int GetServiceSocket(char *szIp,long lPort)
{
WSADATA wsd;
unsigned long lArgp=1;
fd_set WriteFds;
struct timeval timeout;
int ret; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
return -1;
SOCKET client=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(client==SOCKET_ERROR)
return -1;
SOCKADDR_IN sa;
sa.sin_port=htons((unsigned short)lPort);
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=inet_addr(szIp);
ioctlsocket(client,FIONBIO,&lArgp); if(connect(client,(sockaddr*)&sa,sizeof(sa))==SOCKET_ERROR)
{
FD_ZERO(&WriteFds);
FD_SET(client,&WriteFds);
timeout.tv_sec=3;
timeout.tv_usec=0;
ret=select(client+1,NULL,&WriteFds,NULL,&timeout);
if((ret==0)||(ret==SOCKET_ERROR))
{
closesocket(client);
return -1;
}
if(!FD_ISSET(client,&WriteFds))
{
closesocket(client);
return -1;
}
}
lArgp=0;
ioctlsocket(client,FIONBIO,&lArgp);
return client;
}void __fastcall TForm1::Button1Click(TObject *Sender)
{
long lClient,lRet,i;
char chStart,chCmd,chEnd;
long lLength,lSeq;
char buf[256],buffer[512];
PACKET packet;
char szIp[20]; memset(szIp,0,sizeof(szIp));
lSeq=20;
chStart=0x01;
chCmd=0x60;
//chCmd=0x62;
chEnd=0x02;
memset(buf,0,sizeof(buf));
/*printf("Enter AccNbr: (exit to exit program)\n");
scanf("%s",buf);
if(strcmp(buf,"exit")==0)
break; if(strlen(buf)==0)
continue; */ sprintf(buffer,Edit1->Text.c_str()); lClient=GetServiceSocket("132.231.33.151",4200);
if(lClient<0)
{
ListBox1->Items->Add("Connect 132.231.33.151:4200 fail");
}
ListBox1->Items->Add("connected 132.231.33.151"); if((lRet=SendData(lClient,(char*)&chStart,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
lLength=11+strlen(buffer);
if((lRet=SendData(lClient,(char*)&lLength,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&lSeq,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chCmd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} if((lRet=SendData(lClient,(char*)buffer,lLength-11))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chEnd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} memset(&packet,0,sizeof(packet));
memset(buffer,0,sizeof(buffer));
if((lRet=ReadData(lClient,(char*)&packet.chStart,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.lLength,4))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.lSeq,4))!=0)
{
ListBox1->Items->Add("ReadData fail");
} if((lRet=ReadData(lClient,(char*)&packet.chCmd,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
i=packet.lLength-11;
packet.pData=(char*)malloc(i+1);
memset(packet.pData,0,i+1);
if((lRet=ReadData(lClient,packet.pData,i))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.chEnd,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
closesocket(lClient); ListBox1->Items->Add("packet.start=" + IntToStr(packet.chStart));
ListBox1->Items->Add("packet.length=" + IntToStr(packet.lLength));
ListBox1->Items->Add("packet.seq=" + IntToStr(packet.lSeq));
ListBox1->Items->Add("packet.cmd=" + IntToStr(packet.chCmd));
ListBox1->Items->Add(packet.pData);
ListBox1->Items->Add("packet.end=" + IntToStr(packet.chEnd)); free(packet.pData);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
long lClient,lRet,i;
char chStart,chCmd,chEnd;
long lLength,lSeq;
char buf[256],buffer[512];
PACKET packet;
char szIp[20]; memset(szIp,0,sizeof(szIp));
lSeq=20;
chStart=0x01;
//chCmd=0x60;
chCmd=0x62;
chEnd=0x02;
memset(buf,0,sizeof(buf));
/*printf("Enter AccNbr: (exit to exit program)\n");
scanf("%s",buf);
if(strcmp(buf,"exit")==0)
break; if(strlen(buf)==0)
continue; */ sprintf(buffer,Edit2->Text.c_str()); lClient=GetServiceSocket("132.231.33.151",4200);
if(lClient<0)
{
ListBox1->Items->Add("Connect 132.231.33.151:4200 fail");
}
ListBox1->Items->Add("connected 132.231.33.151"); if((lRet=SendData(lClient,(char*)&chStart,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
lLength=11+strlen(buffer);
if((lRet=SendData(lClient,(char*)&lLength,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&lSeq,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chCmd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} if((lRet=SendData(lClient,(char*)buffer,lLength-11))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chEnd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
}
//---------------------------------------------------------------------------一段C++Builder的程序转化为Delphi如何转,请高手帮忙
#pragma hdrstop#include "Unit1.h"
#include <stdio.h>
#include "winsock2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------int ReadData(SOCKET client,char* buffer,int iNum)
{
fd_set ReadFds;
struct timeval timeout;
unsigned long lArgp=1;
int iBytesRead,iRet; timeout.tv_sec=5;
timeout.tv_usec=0; iBytesRead=0;
while(iBytesRead<iNum)
{
lArgp=1;
ioctlsocket(client,FIONBIO,&lArgp);
FD_ZERO(&ReadFds);
FD_SET(client,&ReadFds);
iRet=select(client+1,&ReadFds,NULL,NULL,&timeout);
if((iRet==0)||(iRet==SOCKET_ERROR))
{
closesocket(client);
return -1;
}
if(!FD_ISSET(client,&ReadFds))
{
closesocket(client);
return -1;
}
lArgp=0;
ioctlsocket(client,FIONBIO,&lArgp); iRet=recv(client,(char*)&(buffer[iBytesRead]),iNum-iBytesRead,0);
if(iRet==0)
{
closesocket(client);
return 1;
}else if(iRet==SOCKET_ERROR)
{
closesocket(client);
return 2;
}
iBytesRead+=iRet;
}
return 0;
}int SendData(SOCKET client,char* buffer,int iNum)
{
int iIndex,iRet;
iIndex=0;
while(iNum>0)
{
iRet=send(client,&buffer[iIndex],iNum,0);
if(iRet==0)
{
closesocket(client);
return 1;
}else if(iRet==SOCKET_ERROR)
{
closesocket(client);
return 2;
}
iNum-=iRet;
iIndex+=iRet;
}
return 0;
}
int GetServiceSocket(char *szIp,long lPort)
{
WSADATA wsd;
unsigned long lArgp=1;
fd_set WriteFds;
struct timeval timeout;
int ret; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
return -1;
SOCKET client=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(client==SOCKET_ERROR)
return -1;
SOCKADDR_IN sa;
sa.sin_port=htons((unsigned short)lPort);
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=inet_addr(szIp);
ioctlsocket(client,FIONBIO,&lArgp); if(connect(client,(sockaddr*)&sa,sizeof(sa))==SOCKET_ERROR)
{
FD_ZERO(&WriteFds);
FD_SET(client,&WriteFds);
timeout.tv_sec=3;
timeout.tv_usec=0;
ret=select(client+1,NULL,&WriteFds,NULL,&timeout);
if((ret==0)||(ret==SOCKET_ERROR))
{
closesocket(client);
return -1;
}
if(!FD_ISSET(client,&WriteFds))
{
closesocket(client);
return -1;
}
}
lArgp=0;
ioctlsocket(client,FIONBIO,&lArgp);
return client;
}void __fastcall TForm1::Button1Click(TObject *Sender)
{
long lClient,lRet,i;
char chStart,chCmd,chEnd;
long lLength,lSeq;
char buf[256],buffer[512];
PACKET packet;
char szIp[20]; memset(szIp,0,sizeof(szIp));
lSeq=20;
chStart=0x01;
chCmd=0x60;
//chCmd=0x62;
chEnd=0x02;
memset(buf,0,sizeof(buf));
/*printf("Enter AccNbr: (exit to exit program)\n");
scanf("%s",buf);
if(strcmp(buf,"exit")==0)
break; if(strlen(buf)==0)
continue; */ sprintf(buffer,Edit1->Text.c_str()); lClient=GetServiceSocket("132.231.33.151",4200);
if(lClient<0)
{
ListBox1->Items->Add("Connect 132.231.33.151:4200 fail");
}
ListBox1->Items->Add("connected 132.231.33.151"); if((lRet=SendData(lClient,(char*)&chStart,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
lLength=11+strlen(buffer);
if((lRet=SendData(lClient,(char*)&lLength,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&lSeq,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chCmd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} if((lRet=SendData(lClient,(char*)buffer,lLength-11))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chEnd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} memset(&packet,0,sizeof(packet));
memset(buffer,0,sizeof(buffer));
if((lRet=ReadData(lClient,(char*)&packet.chStart,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.lLength,4))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.lSeq,4))!=0)
{
ListBox1->Items->Add("ReadData fail");
} if((lRet=ReadData(lClient,(char*)&packet.chCmd,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
i=packet.lLength-11;
packet.pData=(char*)malloc(i+1);
memset(packet.pData,0,i+1);
if((lRet=ReadData(lClient,packet.pData,i))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
if((lRet=ReadData(lClient,(char*)&packet.chEnd,1))!=0)
{
ListBox1->Items->Add("ReadData fail");
}
closesocket(lClient); ListBox1->Items->Add("packet.start=" + IntToStr(packet.chStart));
ListBox1->Items->Add("packet.length=" + IntToStr(packet.lLength));
ListBox1->Items->Add("packet.seq=" + IntToStr(packet.lSeq));
ListBox1->Items->Add("packet.cmd=" + IntToStr(packet.chCmd));
ListBox1->Items->Add(packet.pData);
ListBox1->Items->Add("packet.end=" + IntToStr(packet.chEnd)); free(packet.pData);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
long lClient,lRet,i;
char chStart,chCmd,chEnd;
long lLength,lSeq;
char buf[256],buffer[512];
PACKET packet;
char szIp[20]; memset(szIp,0,sizeof(szIp));
lSeq=20;
chStart=0x01;
//chCmd=0x60;
chCmd=0x62;
chEnd=0x02;
memset(buf,0,sizeof(buf));
/*printf("Enter AccNbr: (exit to exit program)\n");
scanf("%s",buf);
if(strcmp(buf,"exit")==0)
break; if(strlen(buf)==0)
continue; */ sprintf(buffer,Edit2->Text.c_str()); lClient=GetServiceSocket("132.231.33.151",4200);
if(lClient<0)
{
ListBox1->Items->Add("Connect 132.231.33.151:4200 fail");
}
ListBox1->Items->Add("connected 132.231.33.151"); if((lRet=SendData(lClient,(char*)&chStart,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
lLength=11+strlen(buffer);
if((lRet=SendData(lClient,(char*)&lLength,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&lSeq,4))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chCmd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
} if((lRet=SendData(lClient,(char*)buffer,lLength-11))!=0)
{
ListBox1->Items->Add("SendData fail");
}
if((lRet=SendData(lClient,(char*)&chEnd,1))!=0)
{
ListBox1->Items->Add("SendData fail");
}
}
//---------------------------------------------------------------------------一段C++Builder的程序转化为Delphi如何转,请高手帮忙
解决方案 »
- CommanText does not return a result set
- 请教-------------为什么我的ScrollBox 不显示滚动条?
- 急啊!已经搞了二天了,却不知错在那里
- 字符串问题,着急,请大家帮帮忙,谢谢了!
- 如何检查 汉字 与 拼音 是否匹配!!
- 现在女孩心里想着啥???????????????????????????????????????????????????????
- 各位!怎样得到SQL SERVER数据库表的所有字段的类型和长度呀!请帮帮忙!!! 分不够可以另送的!!
- 一些网吧管理软件是怎么把WINDOWS的桌面变成自己的,开始菜单也是自己的,
- if (adotable1['ram']>'2002-05-09') then ...:ram为时间日期型这样是否成立.该如何处理机.
- 比较烦人多线程的问题
- 请教用WebConnection做过三层的朋友
- Delphi实现将映射盘文件copy到本地
嗯,如果这是你找的C++代码的话,建议还是直接找DELPHI的,这方面的代码都很容易找的