TClientSocket->Socket->SendText()能在两个线程中使用吗?

Ronal_Lee 2009-12-08 05:14:20
前提 :TClientSocket设置为非阻塞。

请问 能在两个线程中 使用同一个TClientSocket控件的发送字符串的函数(TClientSocket->Socket->SendText())吗?会产

生多个线程互斥问题吗?

谢谢

...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjq2003 2009-12-10
  • 打赏
  • 举报
回复
必须做处理
yhec 2009-12-09
  • 打赏
  • 举报
回复
不能直接用,需互斥处理
zhgwbzhd 2009-12-08
  • 打赏
  • 举报
回复
如果保证两个机器都开机,且都联网正确。建议使用TCP。

如果不能保证,只好用UDP了。
僵哥 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ronal_lee 的回复:]
引用楼主 ronal_lee 的回复:
前提 :TClientSocket设置为非阻塞。

请问 能在两个线程中 使用同一个TClientSocket控件的发送字符串的函数(TClientSocket->Socket->SendText())吗?会产

生多个线程互斥问题吗?

谢谢




请问,使用lock()跟控件是阻塞和非阻塞有关系吗?还有就是什么情况下会出现“不能一次性全部发送出去”?谢谢
[/Quote]
先理解什么是阻塞和非阻塞,然后再考虑清楚在什么情况下会阻塞什么。再看看MSDN当中的对于API函数send的注解。
Ronal_Lee 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 ronal_lee 的回复:]
前提 :TClientSocket设置为非阻塞。

请问 能在两个线程中 使用同一个TClientSocket控件的发送字符串的函数(TClientSocket->Socket->SendText())吗?会产

生多个线程互斥问题吗?

谢谢


[/Quote]

请问,使用lock()跟控件是阻塞和非阻塞有关系吗?还有就是什么情况下会出现“不能一次性全部发送出去”?谢谢
僵哥 2009-12-08
  • 打赏
  • 举报
回复
ClientSocket->Socket->Lock();
try{
//在这里使用
//注意:SendText并不能够保证把你预发送的数据一次性全部发送出去,请判断返回值,当不为预期发送的数据量时请继续发送后续数据
}__finally{
ClientSocket->Socket->Unlock();
}

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧