VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 600|回复: 11

[求助] MFC的服务器端用完成端口接收消息的问题

[复制链接]
39_avatar_middle
在线会员 535638819zsm 发表于 2018-3-19 15:09:34 | 显示全部楼层 |阅读模式
3驿站币
我的一个客户端用的socket发送消息结构体与服务端进行的通信,但我的控制端是WEB形式的,能够与服务端通信发送字符串了,服务端用的完成端口,但是WEB是用C#做的,没有结构体这个东西,而且结构体这个东西必须使用,否则改变太大,有什么好的建议吗?

最佳答案

查看完整内容

其实,不管C#有没有结构体这个概念,只要他支持字节数据的发送就可以,只要在C#端按照结构体的内存模型来发送数据就行。另外,也可以让C#端发送json字符串,不过字符串的长度不固定,所以每次给C++服务器发送的时候要告诉C++服务器这个json字符串的长度,不然会出现粘包的现象,也就是说要自定义协议。




上一篇:C++编码风格
下一篇:c++统计单词个数问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-3-19 15:09:35 | 显示全部楼层
535638819zsm 发表于 2018-3-22 15:51
或者是能不能让web端直接将JSON转换成我想要的结构体,然后直接将结构体传给我呢

其实,不管C#有没有结构体这个概念,只要他支持字节数据的发送就可以,只要在C#端按照结构体的内存模型来发送数据就行。另外,也可以让C#端发送json字符串,不过字符串的长度不固定,所以每次给C++服务器发送的时候要告诉C++服务器这个json字符串的长度,不然会出现粘包的现象,也就是说要自定义协议。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-19 15:19:14 | 显示全部楼层
结构体这个东西只是一块连续的内存发送到对方。C# 方已经知道结构体的内存模型了,就可以按照这个结构体的内存规则来读取数据就行。比如前4个字节表示一个整型int,再读取256个字节表示一个字符串什么的。等等吧,大概就是这个意思!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-19 15:38:47 | 显示全部楼层
Syc 发表于 2018-3-19 15:19
结构体这个东西只是一块连续的内存发送到对方。C# 方已经知道结构体的内存模型了,就可以按照这个结构体的 ...

那从c#方向服务器端发送信息呢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-19 15:43:52 | 显示全部楼层
535638819zsm 发表于 2018-3-19 15:38
那从c#方向服务器端发送信息呢

一样的道理,只是反过来而已!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-22 15:20:04 | 显示全部楼层
Syc 发表于 2018-3-19 15:43
一样的道理,只是反过来而已!

图1是web通过socket传的一个JSON,服务器端接收到并显示了。图2是服务器端接收的代码,我创建了结构体对象指向了接收到的消息,也就是那个JSON。图3是我服务器端定义的结构体。我想让穿过来的JSON的三个字段和我结构体的三个字段相对应,不知道怎么办

1

1

2

2

3

3

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-22 15:23:24 | 显示全部楼层
535638819zsm 发表于 2018-3-22 15:20
图1是web通过socket传的一个JSON,服务器端接收到并显示了。图2是服务器端接收的代码,我创建了结构体对 ...

JSON的3个字段是ID Hong 和Content,我想让它和我的结构体的 Msg-id, name,context相对应的赋值。有什么办法能让它对应上吗,想求一下具体的代码。MFC的服务器端用完成端口接收消息的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-22 15:27:06 | 显示全部楼层
535638819zsm 发表于 2018-3-22 15:20
图1是web通过socket传的一个JSON,服务器端接收到并显示了。图2是服务器端接收的代码,我创建了结构体对 ...

如果 web 那边是按照C++中的结构体的这种内存结构传的数据的话,服务器端接收到之后,直接用个 MSGINFO 的指针指向这块内存数据就行,里面的各个成员,比如 Msg_id,name 或者 context 就自动对应上了!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-22 15:38:47 | 显示全部楼层
Syc 发表于 2018-3-22 15:27
如果 web 那边是按照C++中的结构体的这种内存结构传的数据的话,服务器端接收到之后,直接用个 MSGINFO  ...

意思是web端传JSON是可行的,只要按照服务器的结构体这种内存结构传就可以了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-22 15:45:18 | 显示全部楼层
535638819zsm 发表于 2018-3-22 15:38
意思是web端传JSON是可行的,只要按照服务器的结构体这种内存结构传就可以了

才明白你意思,你说的是web传递 json 格式的字符串啊?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-22 15:48:30 | 显示全部楼层
Syc 发表于 2018-3-22 15:45
才明白你意思,你说的是web传递 json 格式的字符串啊?

对,web通过socket传递json字符串,我是在想这么做是不是能行,有没有其他好的办法能让他传过来的东西和我的结构体的内容对应上,因为c#没有结构体这个概念

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-22 15:51:25 | 显示全部楼层
535638819zsm 发表于 2018-3-22 15:48
对,web通过socket传递json字符串,我是在想这么做是不是能行,有没有其他好的办法能让他传过来的东西和 ...

或者是能不能让web端直接将JSON转换成我想要的结构体,然后直接将结构体传给我呢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2018-11-19 22:34

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表