日期:2014-05-16  浏览次数:20706 次

socket收发出现乱码的问题,麻烦大家看看

这个程序主要是实现通过两台机子聊天的功能
接收程序:
void   *process_r(void*   a)
{
                assert(NULL   !=   a);
                MSG   msg;
                int   sockfd   =   static_cast <multi_data   *> (a)-> fd;
                for(;;)
                {
A:                             if(recv(sockfd,&msg.length,sizeof(msg.length),0)   ==   -1)
                                {
                                                perror( "recv ");
                                                return(NULL);
                                }
                                if(0   ==   msg.length)
                                {
                                                goto   A;
                                }
                                pthread_testcancel();//设置线程安全取消点
                                msg.data   =   new   char[ntohl(msg.length)];
                                if(recv(sockfd,const_cast <char*> (msg.data),sizeof(*msg.data)*ntohl(msg.length),0)   ==   -1)
                                {
                                                perror( "recv ");
                                                return(NULL);
                                }
                                string   words_recv(msg.data);
                                if(!words_recv.empty())
                                {
//   &