首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

socket中recv接收到乱码解决方法

2013-01-01 
socket中recv接收到乱码服务端发送信息代码while(1){if (StrDatestDate){//判断配置文件中URL是否有值,

socket中recv接收到乱码
服务端发送信息代码
while(1)
{
if (StrDate==stDate)
   {
//判断配置文件中URL是否有值  ,有就传送这个值给客户端
        strTemp=GetPrivateProfileString("record","url","",str.GetBuffer(MAX_PATH),MAX_PATH,".\\ser.ini");
if (strTemp==0)
{
break;
}
else
{
 str.ReleaseBuffer();
 send(AcceptSocket,str,strlen(str)+1,0);
}//首页传送完成
           
}
    closesocket(AcceptSocket);//关闭套接字。等待另一个用户请求
}
问题出现在我SER.ini配置文件中URL=后边没有数据情况下MessageBox测试 出现乱码
单步测试发现是在closesocket(AcceptSocket)时候出现的   各位大侠帮忙看下是什么原因
客户端接收代码
    recv(client,Urlrecv,100,0);
    MessageBox(NULL,Urlrecv,"接收到提示",MB_OK);
[解决办法]
1.在发送字符串后面做好字符串结尾标记,或初始化的时候清空或设置为0
2.关闭socket前,判断下发送完成没有,如果使用BCB的socket组件有write事件,如果使用api,设置下异步事件
3.你的代码有点象发送网页,对于大字符串货数据,最后自己定义下封包和协议,检查下数据完整性

热点排行