标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-298309-1-1.html




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

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