VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 675|回复: 5

[已解决]socket传输远程服务列表

[复制链接]
85_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-28 02:18:17 来自手机 | 显示全部楼层 |阅读模式
socket通信中,怎么获取远程的服务列表?我是放在vector<char*>中传过来,可是客户端解析出错,试了好些了,字符串数组,结构体数组都不行呀,就是客户端解析不出来,服务端和客户端传输的数据结构都是一模一样约定好的,求教大佬
最佳答案
01_avatar_small
2019-10-28 13:45:45
kejon123 发表于 2019-10-28 10:26
我是服务列表,所以,每一行的服务名都是字符数组,然后装到vector里,最后把vector传过来,这样做是否可 ...

那不行,数组的定义是内存连续,vector确实也是数组,要求内存连续,但是他实际上还是个模板包装类,内部有个指针,指向一块内存连续的空间。所以你这个 DATA_MSG 结构体中放个 vector 之后直接发送肯定是不行的。




上一篇:在 MFC List control 单元格文字不同颜色
下一篇:《实用C++》第38课中运算符重载编译错误问题(详见帖子内容)
01_avatar_middle
最佳答案
41 
online_admins 发表于 2019-10-28 09:57:18 | 显示全部楼层
通过网络发送过来的必须是内存连续的字节流
客户端发送的时候比如用结构体,那么结构体中就不能有指向其他地址的内存,必须是连续的
这样对方收到之后才能正常解析

比如一个学生信息:
  1. struct Student
  2. {
  3.         char name[64];
  4.         int sex;
  5.         int age;
  6. };
复制代码


这样是可以的,但是以下这样就不行:
  1. struct Student
  2. {
  3.         char *p_name;
  4.         int sex;
  5.         int age;
  6. };
复制代码

85_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-28 10:26:23 | 显示全部楼层
admin 发表于 2019-10-28 09:57
通过网络发送过来的必须是内存连续的字节流
客户端发送的时候比如用结构体,那么结构体中就不能有指向其他 ...

我是服务列表,所以,每一行的服务名都是字符数组,然后装到vector里,最后把vector传过来,这样做是否可行,还有就是我定义的传输数据是一个结构体:
struct DATA_MSG{
   int type;
   char msg[100],
   vector<char []>
}
里面的vector就是单独装服务的
01_avatar_middle
最佳答案
41 
online_admins 发表于 2019-10-28 13:45:45 | 显示全部楼层    本楼为最佳答案   
bestAnswer
kejon123 发表于 2019-10-28 10:26
我是服务列表,所以,每一行的服务名都是字符数组,然后装到vector里,最后把vector传过来,这样做是否可 ...

那不行,数组的定义是内存连续,vector确实也是数组,要求内存连续,但是他实际上还是个模板包装类,内部有个指针,指向一块内存连续的空间。所以你这个 DATA_MSG 结构体中放个 vector 之后直接发送肯定是不行的。
22_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-29 15:26:47 | 显示全部楼层
楼上正解,如果你非得这么用,你可以把结构体序列化让他连续,就可以直接用了
50_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-29 19:54:34 | 显示全部楼层
万丈高楼,需起于平地
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

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

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

GMT+8, 2023-9-24 23:07

Powered by CcTry.CoM

© 2009-2021 cctry.com

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