VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

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

[求助] 完成端口的问题

[复制链接]
39_avatar_middle
在线会员 535638819zsm 发表于 2018-3-12 16:32:30 | 显示全部楼层 |阅读模式
3驿站币
客户端test的消息结构体MSGINFO需要新添加一个CString CODE=1+2+“C;传到服务器端,服务器端也添加了CString CODE;
服务器端用的完成端口,这方面我还不太清楚,之前看过。 我在 完成端口的_DoRecv中获取到了消息结构体的msg对象,在showMessage中可以显示 msg之前的信息,为什么收不到我新添加的 CODE信息呢。
具体方法如图

服务器端

服务器端

客户端

客户端

最佳答案

查看完整内容

这个跟放到前后应该没什么关系,本身 sizeof(MSGINFO_S) 的大小已经包含了这个 code 数组,所以不管放在前后都能发送出去的。




上一篇:二进制文件写入(0xFF)问题
下一篇:新人求助

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

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

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

51_avatar_middle
online_admins Syc 发表于 2018-3-12 16:32:31 | 显示全部楼层
535638819zsm 发表于 2018-3-15 14:27
我把WCHAR code[1024]放到了结构体的最前面,就可以传送和接受消息了,虽然弄出来了但是不知道是为什么。 ...


这个跟放到前后应该没什么关系,本身 sizeof(MSGINFO_S) 的大小已经包含了这个 code 数组,所以不管放在前后都能发送出去的。

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

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

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

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-12 16:35:18 | 显示全部楼层
CString 内部是一个指针,所以放在结构体中之后,会导致结构体的内存不是连续的,所以即使结构体对象发送过去了,也没办法把内存取出来。所以正确的做法是用字符数组,别用 CString,在本地可以用 CString,在网络发包的时候就不行了

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

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

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

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-12 17:09:01 | 显示全部楼层
Syc 发表于 2018-3-12 16:35
CString 内部是一个指针,所以放在结构体中之后,会导致结构体的内存不是连续的,所以即使结构体对象发送过 ...

我用int类型的测试了一下,为什么还是收不到呢。
char* m_Message = pIoContext->m_wsaBuf.buf;
        CStringToTransform m_str_IP;
        CStringToTransform m_str_Port;
        MSGINFO *msg;
        msg = (MSGINFO*)m_Message;
        this->_ShowMessage(_T("收到  %s:%d 信息ID: %d"), m_str_IP.CharToCString(m_IP), m_Port,msg->Msg_id );
// msg指向了  pIoContext->m_wsaBuf.buf,是不是这里面的内容我需要 做什么更改呢

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

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

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

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-12 17:10:42 | 显示全部楼层
535638819zsm 发表于 2018-3-12 17:09
我用int类型的测试了一下,为什么还是收不到呢。
char* m_Message = pIoContext->m_wsaBuf.buf;
        CStri ...

把结构体的定义改了,内部不能用指针或者是CString这种含有指针的对象

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

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

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

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-13 11:10:48 | 显示全部楼层
Syc 发表于 2018-3-12 17:10
把结构体的定义改了,内部不能用指针或者是CString这种含有指针的对象

我在俩边的结构体定义都改了,在客户端的char*code=“123”;
typedef struct tagMSGINFO
{
        int Msg_id;
        WCHAR name[50];
        BYTE context[1024 * 8 - 4 - 50 *2];
        char *code;
}MSGINFO;
在服务器端,想看一下是不是把客户端的123发过来了,但是什么都没有显示。
CString str = (CString)msg->code;
        AfxMessageBox(str);
如果要是发int类型的就可以显示

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

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

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

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-13 11:15:08 | 显示全部楼层
535638819zsm 发表于 2018-3-13 11:10
我在俩边的结构体定义都改了,在客户端的char*code=“123”;
typedef struct tagMSGINFO
{

我不是说了么,内部不能用指针或者是CString这种含有指针的对象,你用了指针一样不行!

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

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

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

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-14 11:08:55 | 显示全部楼层
Syc 发表于 2018-3-13 11:15
我不是说了么,内部不能用指针或者是CString这种含有指针的对象,你用了指针一样不行!

我用了char和WCHAR俩组类型的数组进行测试,在服务端和客户端的消息结构体都添加了数组的变量。服务端还是接受不到客户端发来的信息。
char* m_Message = pIoContext->m_wsaBuf.buf;  我添加了变量会不会对这个buf有影响呢,还是其他 问题?

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

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

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

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-14 11:44:47 | 显示全部楼层
535638819zsm 发表于 2018-3-14 11:08
我用了char和WCHAR俩组类型的数组进行测试,在服务端和客户端的消息结构体都添加了数组的变量。服务端还 ...

你怎么添加的?m_wsaBuf.buf 只是个缓冲区,没影响的!

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

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

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

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-14 12:13:17 | 显示全部楼层
Syc 发表于 2018-3-14 11:44
你怎么添加的?m_wsaBuf.buf 只是个缓冲区,没影响的!

结构体在客户端和服务器端的内容是一样的。这个是用的WCHAR数组,之前用char数组也不行

结构体

结构体

服务器端接受并显示

服务器端接受并显示

在客户端给结构体中的参数赋值

在客户端给结构体中的参数赋值

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

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

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

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-14 14:13:43 | 显示全部楼层
535638819zsm 发表于 2018-3-14 12:13
结构体在客户端和服务器端的内容是一样的。这个是用的WCHAR数组,之前用char数组也不行

看你这块的代码貌似没什么问题!
可能原因不在这

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

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

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

回复

使用道具 举报

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-3-15 14:27:06 | 显示全部楼层
Syc 发表于 2018-3-14 14:13
看你这块的代码貌似没什么问题!
可能原因不在这

我把WCHAR code[1024]放到了结构体的最前面,就可以传送和接受消息了,虽然弄出来了但是不知道是为什么。。。
11.png

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

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

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

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-12-14 14:56

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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