D dhl2001 Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-11 #2 procedure xxxx(senderbject) begin xxxxxxxxx; end; clientsocket.onread:=xxxx;
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-11 #3 随便找一个类,比如你的form就可以,里面加一个方法(要在类里面,不能作为全局函数) procedure sock_onread(Sender: TObject; Socket: TCustomWinSocket); 赋值: clientsocket.OnRead:=sock_onread;
随便找一个类,比如你的form就可以,里面加一个方法(要在类里面,不能作为全局函数) procedure sock_onread(Sender: TObject; Socket: TCustomWinSocket); 赋值: clientsocket.OnRead:=sock_onread;
M Milpas Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-11 #4 to dhl2001: 我是想在一个过程里创建ClientSocket,然后由多个线程调用,我希望每个cs都指向它自己的onread事件。 你的方法解决不了啊。 to Pipi: 我是想做成和Form无关的Procedure,你的写法不行啊,好象一定要加:TForm procedure TForm1.sock_onread(Sender: TObject; Socket: TCustomWinSocket);
to dhl2001: 我是想在一个过程里创建ClientSocket,然后由多个线程调用,我希望每个cs都指向它自己的onread事件。 你的方法解决不了啊。 to Pipi: 我是想做成和Form无关的Procedure,你的写法不行啊,好象一定要加:TForm procedure TForm1.sock_onread(Sender: TObject; Socket: TCustomWinSocket);
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-11 #5 我都说了,要在类里面,不能作为全局函数 不过这个类不一定必须TForm,可以是TThread、TDataModule、之类的,你自己定义一个类都可以的 但是一定要作为某个对象的方法!
M Milpas Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-12 #6 to Pipi: 我在线程里边用,不行啊,帮我看看: Type TcmThread = class(TThread) procedure TcmThread.xxxxx; var csk:TClientSocket; begin csk:=TClientSocket.Create(Self); ...... end; 错误提示是: Incompatible types:'TComponent' and 'TcmThread'
to Pipi: 我在线程里边用,不行啊,帮我看看: Type TcmThread = class(TThread) procedure TcmThread.xxxxx; var csk:TClientSocket; begin csk:=TClientSocket.Create(Self); ...... end; 错误提示是: Incompatible types:'TComponent' and 'TcmThread'
M Milpas Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-12 #7 奇怪,为什么我在线程里用的是NotBlocking模式,它却不触发ONREAD事件呢?
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-12 #8 我说的是事件,那个事件的过程要在类里面 而你说的是create,这样 TClientSocket.Create(nil)
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-15 #10 你有没有 clientsocket.OnRead:=你的onread过程 啊
C copy_paste Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-15 #11 好像在线程中不能用onRead,而且TClientSocket有阻塞和非阻塞方式,如果是非阻塞方式用 线程没什么用处(个人感觉),一般在阻塞方式才用线程,而阻塞方式的ClientSocket在线程 接收用TWinSocketStream来waitfor, read ,write
好像在线程中不能用onRead,而且TClientSocket有阻塞和非阻塞方式,如果是非阻塞方式用 线程没什么用处(个人感觉),一般在阻塞方式才用线程,而阻塞方式的ClientSocket在线程 接收用TWinSocketStream来waitfor, read ,write
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-15 #12 是了,如果是用nonBlocking的,需要处理消息,即线程自己的消息队列
C copy_paste Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-15 #13 pipi是阻塞方式才是吧,如果非阻塞的话,它是基本消息驱动的,建立对它没什么用, 而且还要在线程中处理消息,阻塞方式是需要自己去建立消息队列,并等待数据的到来进而 读写操作
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-15 #14 阻塞方式不需要消息 非阻塞方式是世界爱你驱动的,所有要有消息处理
M Milpas Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-16 #15 问题已经解决了,非阻塞要用Appliction.ProcessMessage才会触发OnRead. 用Blocking方式,然后用 TWinSocketStream来取返回值好象老取不对? 另外sendText为什么都要在字符后面加#13#10才行,否则没返回?
问题已经解决了,非阻塞要用Appliction.ProcessMessage才会触发OnRead. 用Blocking方式,然后用 TWinSocketStream来取返回值好象老取不对? 另外sendText为什么都要在字符后面加#13#10才行,否则没返回?
一 一天到晚游泳的鱼 Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-17 #17 read ,write. 在socket里的OnGetThread事件里创建TWinSocketStream,然后用read ,write试试.