除了客户端刚连接上的时候可以发送一次,然后再用button发送就出错了,
用的INDY10.0.52版的 Idtcpserver和Idtcpclient
function acsend(st:string):Boolean;
var
Acontext:TIdContext;
begin
AContext.Connection.Socket.WriteLn(st);
end;procedure TForm1.TcpsConnect(AContext: TIdContext);
begin
acsend(mmo1.Text);
end;procedure TForm1.btn1Click(Sender: TObject);
begin
acsend(mmo1.Text);//这里点了就出错了,那个acc..什么的错误.
end;目的就是服务器端点按钮之后发送mmo1.text的内容
用的INDY10.0.52版的 Idtcpserver和Idtcpclient
function acsend(st:string):Boolean;
var
Acontext:TIdContext;
begin
AContext.Connection.Socket.WriteLn(st);
end;procedure TForm1.TcpsConnect(AContext: TIdContext);
begin
acsend(mmo1.Text);
end;procedure TForm1.btn1Click(Sender: TObject);
begin
acsend(mmo1.Text);//这里点了就出错了,那个acc..什么的错误.
end;目的就是服务器端点按钮之后发送mmo1.text的内容
var
Acontext:TIdContext;
begin
AContext.Connection.Socket.WriteLn(st);
end;
这样写的啊
begin
acsend(mmo1.Text);
end;这也没创建可以执行啊.
AContext.Connection是个什么东西你都没说嘛,不错见鬼了
现在通过修改已经可以发送出去和接受到,问题在如何处理同步上面.
最好讲讲首先,服务器开启,然后客户端发起连接,之后服务端返回XX连接成功,然后客户端接受到返回信息提示连接成功,然后服务器端和客户端可以互相发送STRING
连接时,你能够发送成功,是因为你发送给了刚刚连接成功的那个客户端,而你写的过程中没有实例话,访问了没有实例化的对象,自然会报错
你即使实例化了,也会报错,因为它根本不知道你人发送给哪个客户端数据
问题是现在客户端和服务器连接之后,如何处理服务器端发送过来的数据,客户端的处理函数是idclient.iohandle.readln();问题是已经存在一个连接之后如何在当前连接里面实现双工通讯,按照现在来看至少在另外一个线程里面是可以接受到的.也就是把处理函数放入线程中执行.
indy10官方demo包:http://indy.fulgan.com/ZIP/Indy10demo.zip