关于在线程中建立Socket连接的问题!(100分)

  • 主题发起人 主题发起人 quanxin
  • 开始时间 开始时间
Q

quanxin

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中需要用到ClientSocket组件

程序中,我有一个使用CreateThread建立的线程
在线程中,我用

frmMain.ClientSocket.Address:=CurrentJob.JobIP;
frmMain.ClientSocket.Port:=3000;
frmMain.ClientSocket.Open;

建立和远程Server的连接,经过调试,连接建立是成功的。但建立以后

无论是从Server端使用 ServerSocket.Socket.Connection[0].SendText('ssss');
发送信息,还是从客户端发送信息,都无法达到另一端。

但如果我不是在线程中建立连接,而是用一个按钮(可以认为是在主线程中)建立连接,
则一切正常,上述情况都能正常运行!

请问如何解决这样的问题?我两边都使用的是非阻塞模式,多谢!
[blue][/blue][:(!][:(!]
代码:
 
[blue]算了,看来这里也没有传说的那么神,这个问题我自己解决了[/blue]
[red]就是在子线程中在其一个线程来进行连接,因为根据我这些天的测试,发现因为连接Socket的
组件实际上运行于主线程,而我操作它却是在一个子线程中,涉及到线程同步的问题,可能子线
程中的某些资源没有释放,所以无法响应主线程某些消息,所以我决定把连接在独立出来
一试果然成功了。呵呵[:D][/red]
 
首先恭喜你了, 但不知道如果建立多个连接是否可以?
 
可以的,没问题
 
[red]两边都使用的是非阻塞模式[/red]
既然是用了线程,为什么用非阻塞模式?
 
阻塞模式和非阻塞模式不是那样理解的,呵呵。
 
后退
顶部