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

请教一个socket通信的数据处理有关问题

2012-03-20 
请问一个socket通信的数据处理问题?C/C++ codeint main(){WSADATA wsaDataSOCKET sServer,sClientchar b

请问一个socket通信的数据处理问题?

C/C++ code
int main(){    WSADATA wsaData;    SOCKET sServer,sClient;    char buf[1024];    WORD version=MAKEWORD(2,0);    int ret=WSAStartup(version,&wsaData);    if(ret!=0)         cout<<"初始化失败"<<endl;else cout<<"初始化成功\r\n";    sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    if(INVALID_SOCKET==sServer)    {        WSACleanup();        return -1;    }        SOCKADDR_IN addServ;        addServ.sin_family=AF_INET;        addServ.sin_port=htons(5090);        addServ.sin_addr.S_un.S_addr = INADDR_ANY;        int retVal=bind(sServer,(LPSOCKADDR)&addServ,sizeof(SOCKADDR));        if(SOCKET_ERROR==retVal)        {            closesocket(sServer);            WSACleanup();            cout<<"开始监听失败"<<endl;            return -1;        }        listen(sServer,0);        sockaddr_in addrClient;        int addrClientlen=sizeof(addrClient);        while (1)        {            sClient=accept(sServer,(sockaddr FAR *)&addrClient,&addrClientlen);            if (SOCKET_ERROR==sClient)            {                continue;            }            ZeroMemory(buf,sizeof(buf));            retVal=recv(sClient,buf,sizeof(buf),0);            int couts=0;            for (int i=0;i<1024;i++)            {                if(buf[i]=='\0')                {                    break;                }                else couts++;            }            const char * pData=buf;            string strResult(buf,couts);            cout<<"数量为:"<<couts<<endl;            if(sClient==INVALID_SOCKET)            {                closesocket(sClient);                continue;            }            closesocket(sClient);            cout<<buf;        }

如果我用c#发过来一个utf-8的中文和英文混合的字符串,我应该怎么处理,cout<<buf才能输出正确的数据,我上面的代码输出的是乱码?请问一般情况下,socket通信采用什么编码的数据进行通信!

[解决办法]
你可以自己定义规则,这就是通讯协议设计的内容了,可以baidu一下。
[解决办法]
windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。
[解决办法]
C/C++ code
windows:utf-8转unicode,然后wcout.
[解决办法]
采取的是数据流,接受到的数据跟你发送时的是一样的!
[解决办法]
探讨

windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。

[解决办法]
探讨

引用:

引用:

windows用的不是utf-8。可以转成ucs-2(utf-16),输出。或者再转回ANSI。

windows 控制台的代码页默认用的不是utf-8。所以显示出来的是乱码

那如果我不进行编码转换,直接传回数据库,也会是乱码?

热点排行