Socket银行接口,受一堆问题困惑!(高分500) (300分)

  • 主题发起人 主题发起人 seaboy
  • 开始时间 开始时间
copy_paste: 服务端跑在unix 下(用c写的),并且通过了中间件才与中间层通讯,
而我的C则很烂,所以呢。。。。。惭愧啊惭愧啊
 
这个问题解决了,是一个IP错误.
 
还好,我最近在写关于SOCKET的程序,有一点体会。
1、用delphi的TServerSocket与TClientSocket可以实现。
2、: 首先用客户端的ClientSocket为ctBlocking方式,并且客户端要写线程来实现收发。服务器端为
stThreadBlocking方式,当客户端发送数据过来时,服务器端马上生成线程,并从数据库中读取数据,
然后返回给客户端.

其它的我再看看吧。下次给你回答。
 
老兄不明白你,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;
}

 
谢谢大家,用indy控件处理这件事变的更简单.
 
我怎么查看别人提出的问题,和别人解答的问提啊/
 
连接占线导致另一个命令 搞定了吗? 我也开始为这个问题头疼了 :(
 
seaboy:
你用indy解决了你的问题,我有一个和你类似的需求,但我对indy不太懂,能不能发个我参考一下,谢谢!
sxs-sun@sohu.com
 
后退
顶部