老兄不明白你,c的话就用API,Delphi你就用indy,你不如将c的一点点翻译过去得了,那测试
不就可以了,而且自己全部控制。
indy没用过,总觉得它让我更懒。
基本上的定义的类型在 winsock.pas单元都有
connect_qsz1()
{
//基本上的定义的类型在 winsock.pas单元都有,如是*指针的话,它的类型相应是P开头的,
struct hostent *host; //如var Host: PHostEnt;
struct sockaddr_in my;
char hostname[20],mesg[11]; //array [0..n-1]
int s,err;
//getenv是取系统环境变量,在SysUtils.GetEnv...开头的
strcpy(hostname,(char *)getenv("QSZ_HOST"));
//
if((host=gethostbyname(hostname)) == NULL )
return -1;
track("qsz_host[%s]/n",hostname);
//ZeroMemory()
bzero((char *)&my,sizeof(my));
my.sin_port = PORT;
my.sin_family=AF_INET;
//Move()
bcopy(host->h_addr,(char *)&my.sin_addr,host->h_length);
track("qsz_hostaddr[%s]/n",host->h_addr);
// socket一样的
s=socket(AF_INET,SOCK_STREAM,0);
//if s <> INVALID_SOCKET then exit;
if(s<0) return -2;
//connect(),可以看看scktcomp.pas中connect的例子(CTRL + F找)
if( err=connect(s,(struct sockaddr *)&my,sizeof(my)) )
{
track("err=[%d]/n",err);
close(s);
return -3;
} //运行到这里就出错了.
mesg[4]=0;
track("mesg[%s]/n",mesg);
track("/n");
if(strncmp(mesg,"CVOK",4))
{
close(s);
return -4;
}
return s;
}