基于对话框的程序和CAsyncSocket的两个原理性问题!
时间:2011-12-15
来源:互联网
框弹出,然后就可以用两个对话框开始下棋。那么第二个对话框是不是又把程序重新执行了一遍呢?(F5调试的时候只有第一
个对话框会执行到断点),调试中我发现,对于程序中的变量,这两个对话框是各自保存一份,也就是A对话框如果改变一个变
量的值B对话框的该变量值并没有改变,这里面包含哪些知识呢? 两个对话框是不是两个线程呢
2.在使用CAsyncSocket套接字的时候,我想这样做:在一个对话框中设置两个按钮A,B。点击A按钮时建立一个服务器套接字,然
后Listen,点击B按钮时建立客户端套接字,然后Connect(我已经派生了CAsyncSocket类,并重写了OnAccept),结果是无法
连接成功。但是如果我换一种方法:对话框中只设置一个按钮"connect",运行两次程序,弹出两个对话框,通过程序控制当点
第一个对话框的connect按钮时建立服务器套接字然后Listen,点第二个对话框的connect按钮时建立客户端套接字然后Connect
这样就连接成功,不知道为什么第一种方法不行呢?
作者: zkvae 发布时间: 2011-12-15
作者: zkvae 发布时间: 2011-12-19
类似windows的计算器小程序,可以同时运行多个实例。
第二个问题:
是不是套接字绑定的端口地址不对?
作者: hping1016 发布时间: 2011-12-19
你的第一种方法可以的,可能是 你哪里出了问题吧...
我估计是你A、B2个按钮事件出了问题!
你的第二种方法没看,自己慢慢琢磨!
作者: longgang521125 发布时间: 2011-12-19
或者采用主机+客户机的模式,不过这样也是要主机发送数据去客户的,,,
作者: cl_gamer 发布时间: 2011-12-19
像你这样调用的,那就是每个对话框都有一个主线程的。
2.这个很少用,看到网上的一段话“在你使用CAsyncSocket之前,必须调用AfxSocketInit初始化WinSock环境,而AfxSocketInit会创建一个隐藏的CSocketWnd对象,由于这个对象由Cwnd派生,因此它能够接收Windows消息。一方面它会接受各个CAsyncSocket的状态报告,另一方面它能捕捉系统发出的各种SOCKET事件。所以它能够成为高层CAsyncSocket对象与WinSock底层之间的桥梁:例如某CAsyncSocket在Send时WSAEWOULDBLOCK了,它就会发送一条消息给CSocketWnd作为报告,CSocketWnd会维护一个报告登记表,当它收到底层WinSock发出的空闲消息时,就会检索报告登记表,然后直接调用报告者的OnSend函数。所以前文所说的CAsyncSocket会自动调用OnXxx,实际上是不对的,真正的调用者是CSocketWnd——它是一个CWnd对象,运行在独立的线程中。”
所以会不是会那个窗口被占用了
作者: fishion 发布时间: 2011-12-19
这是进程通信啊!非线程...
你的第一种方法可以的,可能是 你哪里出了问题吧...
我估计是你A、B2个按钮事件出了问题!
你的第二种方法没看,自己慢慢琢磨!
对第一个问题还知道别的吗?多说点啊,是两个进程,共用一份资源?
对自己资源的改变不影响另一个进程的?
作者: zkvae 发布时间: 2011-12-19
用CAsyncSocket这来控制2个对话框的通信是吧?
也就是当一个对话框下了一个棋子,另一个对话框应该也要更新自己的对话框是不是这个意思?
作者: longgang521125 发布时间: 2011-12-19
而你用的CAsyncSocket不是那个意思(以我的理解)。
其实简单的说你的A/B2个对话框要建立连接。就是A/B要同一个(这是比如其实不是管道)管道一样的2个连接了,
我发消息你能知道,你发消息我也能知道!就是这样的! 纯属我个人理解!~~不对请原谅.
作者: longgang521125 发布时间: 2011-12-19
(1)VC中进程间共享内存实现
http://blog.sina.com.cn/s/blog_5f93da790100okik.html
(2)VC 利用DLL共享区间在进程间共享数据及进程间广播消息
http://www.cnblogs.com/morewindows/archive/2011/08/19/2145799.html
(3)每个一程序入口的WinMain函数都有四个参数,其中之一好像是叫hPreHinstance,它是记录前一个进程的句柄,通过它可以找到前一个进程中的变量.
(4)通过MFC的THREAD_MODULE_STATE等宏及其相关函数可能能够实现你的需求.
第二个问题:理论上应该是可以的吧,是不是你哪里搞错了,比如套接字的状态判断有问题或者端口设置不对?
作者: xqlu2007 发布时间: 2011-12-19
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28