社区
网络及通讯开发
帖子详情
线程中socket有关问题,急~
bcfyhy
2006-08-01 09:41:48
三层系统,中间层TQuery每分钟去数据库中读取一个字段,发现改动后将相关信息通过Socket发到客户端,客户端socket接收后,用单独线程解决具体问题,处理完毕后,把是否成功处理的信息返回给中间层。可是又不能在线程中直接用同一个socket发回中间层啊?那怎么办?
有人能告诉我如何实现么?谢谢!
...全文
207
4
打赏
收藏
线程中socket有关问题,急~
三层系统,中间层TQuery每分钟去数据库中读取一个字段,发现改动后将相关信息通过Socket发到客户端,客户端socket接收后,用单独线程解决具体问题,处理完毕后,把是否成功处理的信息返回给中间层。可是又不能在线程中直接用同一个socket发回中间层啊?那怎么办? 有人能告诉我如何实现么?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bcfyhy
2006-08-01
打赏
举报
回复
谢谢!
13661023811
2006-08-01
打赏
举报
回复
在.h窗体文件中添加:
public:
void COPYDATA(TMessage & msg);
protected:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_COPYDATA, TMessage, COPYDATA)
END_MESSAGE_MAP(TForm)
在对应的.cpp中:
void TFormS::COPYDATA(TMessage &msg)
{
if(msg.Msg==WM_COPYDATA)
{
COPYDATASTRUCT *pCDS = (COPYDATASTRUCT *)msg.LParam; //得到命令的详细内容
int msgcmd=pCDS->dwData;//得到命令的类型
int msglen=pCDS->cbData;//得到命令的长度;
char *data=new char[msglen];
memcpy(data,pCDS->lpData,msglen);//命令的详细内容
这里处理data就可以了。
}
}
在线程中发送消息:
HWND h=Form1->Handle;//上面的窗体的句柄
int msglen=msgs.Length()+1;
char *msg = new char[msglen];
String msgs="要发送的消息";
memcpy(msg,msgs.c_str(),msglen);
COPYDATASTRUCT cs;
cs.dwData = msgcmd; //msgcmd是自定义的int,表示通知消息的类型,用来判定很有用
cs.cbData = msglen;
cs.lpData = msg;
int x= SendMessage(h,WM_COPYDATA,(WPARAM)h,(LPARAM)(&cs));
delete []msg;
bcfyhy
2006-08-01
打赏
举报
回复
“将消息返回主线程”如何实现?小弟刚刚接触线程,还是有些发懵
jaffy
2006-08-01
打赏
举报
回复
为什么不能用同一个SOCKET返回呢?我觉得可以将消息返回住现成,然后同一个SOCKET返消息
JAVA文件传输(论文+源代码).zip
源码以及相关参考论文、文档
java一个简单的即时通讯工具的设计与开发(源代码+论文).zip
源码以及相关参考论文、文档
简单的winsock聊天工具
这个也是我从网上下的,解了我的
急
用,我把它传上来,跟大家分享!
Java聊天室程序(java) (2).zip
Java聊天室程序(java) (2).zip
JAVA局域网飞鸽传书软件设计与实现(源代码+论文).zip
JAVA局域网飞鸽传书软件设计与实现(源代码+论文).zip
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章