服务器端:
CSocket ServerSocket;//用于监听的套接字然后Create Listen ... //这里没有问题 代码不细写了CSocket ToClientSocket;//用于和客户通信的套接字SOCKADDR ClientDDR;int nLengthAddr = sizeof(SOCKADDR);ServerSocket.Accept(ToClientSocket,&ClientDDR,&nLengthAddr);//此处开始阻塞ToClientSocket.Recieve(lpBuf,sizeof(lpAddress));//开始接收 接收的东东扔进lpAddress其中lpBuf这样定义的:wchar_t lpBuf[256];客户端:
CSocket ClientSocket//用于通信的套接字然后是Create Connect... //这里没有问题 代码就不细写了ClientSocket.Send(lpMyStr,sizeof(lpBuf));其中lpMyStr是这样定义的 wchar_t lpMyStr[] = "ABCDE";
然后开始连接通信 发现在我的服务器端的Recieve总是返回-1 无法接收 不知道是哪里错了 以为我的项目是基于Unicode的 所以我想直接传wchar_t 貌似Send的参数和Recieve的参数 是要求ANSI的 也就是char[] 是不是这里有问题 sizeof(lpBuf)得到的是字节数吧 不需要X2吧 这里

解决方案 »

  1.   

    Recieve(lpBuf,sizeof(lpAddress));第二个参数应该是谁的长度?lpBuf的吧?
      

  2.   

    用了wchar,长度就要是宽字符的个数,用sizeof(lpBuf)/sizeof(TCHAR)
      

  3.   

    回1L 那是我的笔误 是lpBuf 对不起啊
      

  4.   

    回LS几位朋友 用wcslen(lpBuf) 需要+1吗 最后的"\0"是不是也应该传过去
      

  5.   

    可以把Receive端的错误打印出来。
      

  6.   

    现在又出现了新问题 用了wcslen之后 编译后 提示错误:size_t”转换到“int”,可能丢失数据          看了下wcslen返回的是一个size_t 这个是什么东东
      

  7.   

     调用这个WSAGetLastError在Recieve函数后面 得到错误代码 10057  请问高手分析下 
      

  8.   

    由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受