首页
社区
课程
招聘
[求助]c++ socket 通信问题
发表于: 2015-7-27 19:59 13619

[求助]c++ socket 通信问题

2015-7-27 19:59
13619
在JNI用socket进行数据传输,但现在socket 通信一直有个问题,就是每次这个发送string数组,都会把需要发送的字符串拼在一起,最终才发送,这可能跟socket通信的缓存机制有关,但我不想这样,有没有办法可以在使用一次send方法,服务器端就可以接收到发送的内容!困扰了有一天多了,求高人指点啊

贴上代码,谢谢!
for(int i = 0;i < CESHI_NUMBER;i++){
                                len = timeUtils->t1_start_handle_string[i].size();
                                LOGD("[time test] t[%d] len is %d",i,len);
                                int result = (int)send(sockfd, timeUtils->t1_start_handle_string[i].c_str(), len, 0);
                                LOGD("[time test] t1 : %s",timeUtils->t1_start_handle_string[i].c_str());
                                //延时1秒,观察服务器是否能接受到
//                                sleep(1);
                                if(result == -1){
                                        LOGE("send t1 error");
                                }
//                                usleep(2000000);
                        }

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 0
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
要不我先用json试试,json应该不会出现这样的问题,顺便等等高手的解决方案
2015-7-27 20:16
0
雪    币: 5
活跃值: (271)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
setsockopt(,,TCP_NODELAY...
2015-7-28 08:25
0
雪    币: 157
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先发长度,再发送内容,
读的时候先读长度,再按长度读内容。
流式协议的套接字本身没有你要的功能。
2015-7-28 08:27
0
雪    币: 459
活跃值: (398)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
粘包感觉没法避免吧,自己做下处理
2015-7-28 08:34
0
雪    币: 205
活跃值: (155)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
evionmzs 正解,TCP属于流式传输,不能依赖一次就一定把所有数据都传送到对端,recv侧需要根据包长度做处理。
2015-7-28 09:36
0
雪    币: 98
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
evionmzs 正解,TCP属于流式传输,不能依赖一次就一定把所有数据都传送到对端,recv侧需要根据包长度做处理。
2015-7-28 12:40
0
游客
登录 | 注册 方可回帖
返回
//