我想客户端通过socket传送一个CStirng变量Path,也就是文件路径到服务器端,然后服务器端返回指定Path路径的文件信息,但是传送中文路径时服务器端收到的是乱码,怎么办啊?
传送字符串:
CString Path=_T("E:\新建文件夹");
clientsocket.Send(Path,Path.GetLength(),0);服务器端:
char buffer[100];
clientsocket.Receive(buffer,100,0);
CString path;
path.Format(_T("%s"),buffer);结果服务器端收到的path是乱码,不过英文字母E正常。
传送字符串:
CString Path=_T("E:\新建文件夹");
clientsocket.Send(Path,Path.GetLength(),0);服务器端:
char buffer[100];
clientsocket.Receive(buffer,100,0);
CString path;
path.Format(_T("%s"),buffer);结果服务器端收到的path是乱码,不过英文字母E正常。
估计你想发送字符串把 那么不要把对象的地址传递给send
clientsocket.Send((LPSTR)(LPCTSTR)Path, _tcsnbcnt(Path, Path.GetLength()), 0);
char buffer[100] = 0;
clientsocket.Receive(buffer, 100, 0);
CString path(buffer);
你看看你程序的其它问题,特别是客户端的发送过程和服务器端的接收过程,在vc中的中文的编码每个字占用的字节数是两个字节,你那样输出的话就把每个汉字给拆开了,所以汉字会出现乱码.
我也不太肯定就是这个问题,只不过是提供你一个思路,这个问题我曾经遇到过.
CString path=_T("E:\新建文件夹"); 发送"E:\新建文件夹"
上面的方法我试了,还是不行啊,该怎么Send呢?
有好多聊天程序传送聊天信息时怎么传送的啊?
我调了好长时间了,中文始终不知怎么传过去,郁闷死了!
str=_T("新建文件夹");
clientsocket->Send((LPSTR)(LPCTSTR)str, _tcsnbcnt(str, str.GetLength()), 0);
char buffer[200]={0};
int n=clientsocket->Receive(buffer,200,0);
CString ReceiveString(buffer);我用的vs2005,客户端和服务器用的都是Use Unicode Character Set
CString ReceiveString((LPCTSTR)buffer);
int nsize = clientsocket.Send(Path.GetBuffer(0),Path.GetLength(),0); 服务器端:
char buffer[100];
memset(buffer,0,100);
int nsize = clientsocket.Receive(buffer,100,0);
CString path;
path.Format(_T("%s"),buffer);
lz你可以调试看看. 发送的size和接收的是不是一样,
clientsocket.Send(Path.GetBuffer(0),Path.GetLength(),0);