procedure TFm_main.Button1Click(Sender: TObject);
var
return_text:string;
begin
label5.Caption:='交易包字串总长度:'+inttostr(length(trim(Edit3.Text)));
try
I:=0;
clientsocket1.Close;
clientSocket1.Address:=edit1.Text;
clientSocket1.Port:=strtoint(edit2.text);
clientsocket1.ClientType:=ctBlocking;
clientSocket1.Open;
while fm_main.ClientSocket1.Active do fm_main.ClientSocket1.Socket.SendText(edit3.text);
Fm_main.Memo1.Lines.Add('转格式:'+edit3.text);
while fm_main.ClientSocket1.Socket.ReceiveLength = 0 do
Application.ProcessMessages;
return_text:=fm_main.ClientSocket1.Socket.ReceiveText;
fm_main.Memo1.Lines.Add('1'+return_text);
fm_main.ClientSocket1.Close; except
showmessage(edit1.text+#13#10+'未开机或未安装服务程序');
end;
end;
对方服务是linux 下标C写的。我采用ctBlocking死活接不到对方的的返回包。有没有这方面的源代码啊。跪求。高分送
var
return_text:string;
begin
label5.Caption:='交易包字串总长度:'+inttostr(length(trim(Edit3.Text)));
try
I:=0;
clientsocket1.Close;
clientSocket1.Address:=edit1.Text;
clientSocket1.Port:=strtoint(edit2.text);
clientsocket1.ClientType:=ctBlocking;
clientSocket1.Open;
while fm_main.ClientSocket1.Active do fm_main.ClientSocket1.Socket.SendText(edit3.text);
Fm_main.Memo1.Lines.Add('转格式:'+edit3.text);
while fm_main.ClientSocket1.Socket.ReceiveLength = 0 do
Application.ProcessMessages;
return_text:=fm_main.ClientSocket1.Socket.ReceiveText;
fm_main.Memo1.Lines.Add('1'+return_text);
fm_main.ClientSocket1.Close; except
showmessage(edit1.text+#13#10+'未开机或未安装服务程序');
end;
end;
对方服务是linux 下标C写的。我采用ctBlocking死活接不到对方的的返回包。有没有这方面的源代码啊。跪求。高分送
while fm_main.ClientSocket1.Active do fm_main.ClientSocket1.Socket.SendText(edit3.text);
var
return_text:string;
begin
label5.Caption:='交易包字串总长度:'+inttostr(length(trim(Edit3.Text)));
try
I:=0;
clientsocket1.Close;
clientSocket1.Address:=edit1.Text;
clientSocket1.Port:=strtoint(edit2.text);
clientsocket1.ClientType:=ctBlocking;
clientSocket1.Open;
while fm_main.ClientSocket1.Active do
begin
fm_main.ClientSocket1.Socket.SendText(edit3.text);
Fm_main.Memo1.Lines.Add('转格式:'+edit3.text);
while fm_main.ClientSocket1.Socket.ReceiveLength = 0 do
Application.ProcessMessages;
return_text:=fm_main.ClientSocket1.Socket.ReceiveText;
fm_main.Memo1.Lines.Add('1'+return_text);
end;
fm_main.ClientSocket1.Close; except
showmessage(edit1.text+#13#10+'未开机或未安装服务程序');
end;
end;
下面是client的:procedure TForm1.Button1Click(Sender: TObject);
const blocklen = 1024*8;
var Fby : file of byte;
blnum,relen : integer;
blbuf : array[0..blocklen] of char;
i : integer;
sl : integer;
client : tsocket;
ca : SOCKADDR_IN;
Haddr : u_long;
msg : string;
wsstatus: integer; //winsocket_status;
rece: TWSAData; //type:WSAData;
ver : integer;
blen : integer;
begin
ver:= 10101010;
wsstatus := WSAStartup(ver, rece);
client := Socket(AF_INET,SOCK_STREAM,0);if (client = INVALID_SOCKET) then
begin
showmessage('socket create error!');
exit;
end;msg := '00010';
msg := msg + 'A'; //A or B
msg := msg + '11111222223333344444'; //20位
msg := msg + memo1.Text;msg :=fillleft(inttostr(length(msg)),'0',5)+copy(msg,6,length(msg));//showmessage(msg);ca.sa_family := PF_INET;ca.sin_port := htons(strtoint(edit2.Text));
Haddr := inet_addr(pchar(trim(edit1.Text)));if ( Haddr = -1 ) then
begin
showmessage('ip is error');
closesocket(client);
exit;
end
else
begin
ca.sin_addr.S_addr:= Haddr;
end;if (connect(Client,ca,sizeof(ca)) <> 0) then
begin
showmessage('连接服务器失败');
exit;
end;{
//msg 转换成 blbuf
//搞定,必须是msg的第1位开始,第0位应该是'0/'
for i :=0 to length(msg)-1 do
begin
blbuf[i]:=msg[i+1];
end; }//msg:=dostounix(msg);
strcopy(blbuf,pchar(msg));//blbuf := pchar(msg);
blen :=length(msg);
sl := send(client,blbuf,blen,0);if (sl <= 0) then
begin
closesocket(client);
exit;
end;
end;
====================================
不可靠是因为不会使用。要能够用好API的人,同样也能够用好这些网络控件。