windows服务程序调用dll问题,在线等

wenh7788 2012-03-31 10:42:15
我有个一个服务
ServiceMain()中我通过LoadLibrary("socket.dll")得到一个导出的函数 startServer
startServer这个函数大体是这样的

startServer()
{
CreateThread( func);
while(1)
{
accept(scoket);
}
}

func()
{
recv(clientbuff);
}

服务安装后,启动服务,什么都没有问题
但是当我要停止服务的时候,我在开启客户端,还是能够收到服务器端返回的信息,
请问如何解决???

不知道大家能明白我的意思吗?
...全文
557 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dulvtianya 2012-03-31
  • 打赏
  • 举报
回复
不明白
oyljerry 2012-03-31
  • 打赏
  • 举报
回复
可能停止服务的时候,服务端的数据已经发送回来了.
向立天 2012-03-31
  • 打赏
  • 举报
回复
不明白
wenh7788 2012-03-31
  • 打赏
  • 举报
回复
我已经找到原因了,是我调用错了。我直接想当然的调用导出函数了,导出函数里面 有个bind 我调用了之后绑定了2次。
这个还真不好表达,要有代码才好解释。结贴了。
wenh7788 2012-03-31
  • 打赏
  • 举报
回复
1.这是一个和socket有关的程序
2.客户端是应用程序,服务器端说白了就是一个 服务具有服务器端功能的程序
3.服务器端的程序可以分解为 windows服务 和 服务器端的应用程序(但是这个我也写成dll)
也就是说windows服务会调用一个具有服务器端功能的(就是socket )dll。
4.
客户端:
while(1)
{
send(sendbuff) //客户端发送数据到服务器端
}

windows服务:
mainservice()
{
LoadLibrary("socket.dll") //我写的dll
startserver(); //导出函数
}
服务器端:
(就是就是window服务调用一个dll(该dll就是我们平常的socket 那些东西))

startServer() //其实这个就是dll的导出函数
{
CreateThread( func);
while(1) //在这里做监听
{
accept(scoket);
}
}

func()
{
recv(clientbuff);
}

但是在我停止服务器的时候。可是我通过打印的信息还是可以看到发送和返回的数据,怎么解决?
Lactoferrin 2012-03-31
  • 打赏
  • 举报
回复
不明白

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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