在各位师傅的帮助下我基本了解了idtcpserver和idtcpclient.
但是serversocket还是有点问题。
现在已经在往我这里发着数据,可是我接不到。ReceiveBuf的用法拜托给个例子好么。
可能问题很白。帮帮小弟。谢谢啦
procedure TForm1.Button1Click(Sender: TObject);
begin
serversocket1.Open;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i:integer;
str:string;
begin
i:=0
serversocket1.Socket.Connections[i].ReceiveBuf(getdata,socket.ReceiveLength);
end;
但是serversocket还是有点问题。
现在已经在往我这里发着数据,可是我接不到。ReceiveBuf的用法拜托给个例子好么。
可能问题很白。帮帮小弟。谢谢啦
procedure TForm1.Button1Click(Sender: TObject);
begin
serversocket1.Open;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i:integer;
str:string;
begin
i:=0
serversocket1.Socket.Connections[i].ReceiveBuf(getdata,socket.ReceiveLength);
end;
能给个列子最好。。谢谢啦。
发过来的是数组。格式是begin
clientsocket1.Address:=。。
clientsocket1.Port:=。。
clientsocket1.Open;
end else begin
for I := 0 to 30 do
sendbuf[i]:=0.00;
for I := 0 to 3 do
buffer[i]:='#';
strpcopy(pchar(@sendbuf[0]),buffer);
for I := 0 to 4 do
begin
temparray[i*5+2]:=VarStruct^.fResult[gainStruct.iVarIndex[i][0]];
Socket: TCustomWinSocket);
var
buf : array[0..255] of byte ;
begin
Socket.ReceiveBuf(buf, 256);
end;
Socket: TCustomWinSocket);
var _ReceiveStrData:string;
_ipremoteaddr:string;
buffer,public_str:string;
i:integer;
key:char;
validip:boolean;
begin
_ipremoteaddr:=Socket.RemoteAddress;
_ReceiveStrData:=Socket.ReceiveText;
if pos('@',_ReceiveStrData)>0 then
begin
socket.SendText('@');
exit;
end;
validip:=false;
for i:=low(Instock) to high(Instock) do
begin
if Instock[i].id=_ipremoteaddr then
begin
Instock[i].Socket:=Socket;
validip:=true;
break;
end;
end;
if not validip then
begin
socket.SendText('Error Ip Address Connection');
exit;
end;
if (length(_ReceiveStrData)>0) and (_ReceiveStrData[length(_ReceiveStrData)]='|') then _ReceiveStrData:=copy(_ReceiveStrData,1,length(_ReceiveStrData)-1);
edtScan.Text:=_ipremoteaddr+':'+_ReceiveStrData;
key:=#13;
edtScanKeyPress(nil,key);
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i:string;
temparray:array[0..30] of single;
SendBuf:array [0..30] of single;
len:integer;
begin
len:=socket.ReceiveLength;
socket.ReceiveBuf(sendbuf,len);
i:=Socket.ReceiveText;
edit1.Text:=i;end;
如果数据肯定是字符串,有直接按字符串接收的函数哦
socket.ReceiveBuf(sendbuf,len);
i:=Socket.ReceiveText;
既然前一句已经接收了,后一句就是直接按字符串接收,当然收不到了
socket.ReceiveBuf(sendbuf,len);
这2个函数已经把buffer的内容全部接收了,后面的ReceiveText不会再收到信息了,除非你的客户端还在继续发