永发信息网

如何实现C++中MFC基于socket类的UDP通信的同时发送与接收?请各位高手帮帮忙啊。。。。。

答案:4  悬赏:0  手机版
解决时间 2021-02-13 05:34
本人用C++的MFC编写了一个UDP通信程序,派生了SOCKET类,用SendTo发送,OnReceive接收。具体是这样的,我建了A主对话框和B、C、D子对话框,其中A、B中有sendto,接收只在A中进行,现在,这个程序跟UDP调试助手(网上下载的)进行通信,可以单独发送,单独接收,但是一旦我这个程序不断的接收数据,在B中就无法输入数据进行发送,而A中可以发送成功,不明白为什么?是不是因为SOCKET类派生在A对话框下的原因?

我简述一下我的程序:

用MFC创建了主对话框A和它的非模态子对话框B,该程序与一ARM板进行基于SOCKET类的UDP通讯

在A、B的编辑框中输入数据,用SendTo命令发给ARM板,
ARM板的程序是evc程序,向对话框程序发送数据,
对话框A下,从socket派生了新类newsocket,其调用OnRneceive函数(只在A中调用)接收数据,并在对话框中显示出来

目前仍存在的问题是:

我将程序与UDP调试助手(网上下载的)进行通讯是成功的,即单独发送、单独接收以及UDP调试助手每1000ms向程序发送数据时,对话框程序仍能向UDP调试助手发送数据.
但是,当与ARM板通讯时,ARM板发来的数据(每100ms发一次数据)能够接收并显示,
这时向ARM板发送数据出现“xxxx内存,该内存不能为read”的错误提示,
而在发送(SendTo)处设断点调试(此时,ARM板仍每100ms发一次数据),发送是成功的

想问一下是什么原因,到底是发送出了问题,还是ARM板那边接收出了问题,还是对话框的发送与接收同时进行造成了内存区冲突(但与调试助手通讯却是成功的)?
最佳答案
可能是内存的问题,也可能是程序的兼容性问题.
全部回答
是不是阻塞了?
第二个参数为所要发送的数据缓冲 也就是你要发送的内容 sendto(sockCLient, “hello”, 100, 0, (SOCKADDR *)&addrSrv, ilen); 可以直接写字符串也可以是一个变量 至于你想获得编辑框的内容 GetDlgItemText ()来获得 而如果想加终止符可以在末尾加"\r\n"
非模态子对话框!!! 这里要用多线程。 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
方圆影像在什么地方啊,我要过去处理事情
请问冬天一晚上大约需要多少度电呀?
交通违章网上报警
老圪倒村怎么去啊,有知道地址的么
一匹布,全做上衣可做15件,全做裤子可做20条
韩语翻译:我不认识你呀
中日一衣带水,交往源远流长。十九世纪四五十
"这个世界缺你不可"下一句可以接什么
敖汉旗贝子府福寿大药房地址在什么地方,想过
鸿福大酒店在什么地方啊,我要过去处理事情
从鹿寨坐车到雒容要做什么车才实惠?
环境保护验收调查中,一般来说,对于水库和水
发动机防尘罩,这个问题有什么好的解决方案?
老油条·杂酱面在什么地方啊,我要过去处理事
麻烦大家帮我找一种类型的小说:主角进入游戏
推荐资讯
在QQ管家下的WIN8系统怎么装不上啊
优速快递(仁和东路与明清路交叉口西150米优速
万州一口包怎么去啊,有知道地址的么
扬子石化 金陵石化 南化这三家中比较好的是哪
怎么把支付宝里的钱转到中国银行的港币账户
加湿器加水是不是的等几分钟才能喷雾?
手机被摔屏最上面出现黑色横纹,截图没有,怎
实实在在投资管理有限公司地址在什么地方,想
如何算出芝加哥市有多少个钢琴调音师
在诊所打屁股针裤子脱多少
注塑上油墨和塑料怎么才能贴合紧
爱舍装饰在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?