| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2143 人关注过本帖
标题:socket发送map的问题
只看楼主 加入收藏
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
结帖率:50%
收藏
 问题点数:0 回复次数:23 
socket发送map的问题
用c++ 的 socket发送map时,在接收端接不到。。
想问下哪位高手知道怎么用socket发送map数据吗?
搜索更多相关主题的帖子: map socket 
2010-03-01 15:26
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用魔城侠客在2010-3-1 15:26:11的发言:

用c++ 的 socket发送map时,在接收端接不到。。
想问下哪位高手知道怎么用socket发送map数据吗?
拆分成byte发送
2010-03-02 11:29
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 
我把map转成char *后发送,但接到是?
如何转成byte?

West and east,home is best……
2010-03-02 12:21
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用魔城侠客在2010-3-2 12:21:55的发言:

我把map转成char *后发送,但接到是?
如何转成byte?
map转char之后收到应该是没有问题的,收到是?应该是你代码的问题吧。你用map封装的东西,再发送之前最好转化掉,如果单纯的强制转换,收到后也是不能还原成map的
2010-03-02 13:00
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 
如何将map转化成byte呢?

West and east,home is best……
2010-03-02 14:55
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 
client代码
        map<string,string> myMap;

        myMap.insert(pair<string,string>("abc","abc"));

        send(sClient,(char *)&myMap,sizeof(myMap),0);

server代码
        char *buff = (char *)malloc(126);

        memset(buff,0,126);

        int retVal = recv(s,buff,126,0);

        if(retVal == SOCKET_ERROR || retVal == 0)
        {
            showMsg("recv() failed or client exit!");
            break;
        }

        map<string,string> *mm = (map<string,string> *)buff;



转成mm后,里面的东西就变成?号了...

West and east,home is best……
2010-03-02 15:10
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
你这么不行的,不是基本类型,不能用这种方法 map<string,string> *mm = (map<string,string> *)buff;
编译器根本不知道这种形式的内在组成形式。在这种通信传输中肯定不能用MAP
2010-03-02 15:14
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用魔城侠客在2010-3-2 15:10:08的发言:

client代码
        map<string,string> myMap;

        myMap.insert(pair<string,string>("abc","abc"));

        send(sClient,(char *)&myMap,sizeof(myMap),0);

server代码
        char *buff = (char *)ma ...
你把string写成char,发送两次,到server那里再组合起来
2010-03-02 15:17
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 
改成char还是不行,会显示map=[1](...)

West and east,home is best……
2010-03-02 16:27
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用魔城侠客在2010-3-2 16:27:43的发言:

改成char还是不行,会显示map=[1](...)
我的意思是,你发出去的时候就是char,不是map,收回的时候也是char,把char转成string,然后按顺序组成map
2010-03-02 17:22
快速回复:socket发送map的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021915 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved