是不是它们的位倒一倒呀?
如果是的话,为什么我用CSocket传数据的时候,不用做任何操作?
如果是的话,那么什么时候需要进行操作后才传输数据?

解决方案 »

  1.   

    各种机器定义的字节存放顺序不同,同样一个int型,有的高位在前,有的低位在前,在建立连接时双方必须同样使用网络字节表示地址和端口号(CSocket隐藏了这部分,你可以跟踪进去看一看,应该可以看到诸如htonl之类的函数调用),如果双方使用同一型号的机器(x86),则发送和接受数据无所谓转换。
      

  2.   

    在使用SOCKET的时候,需要把数据转换成网络字节顺序。
    htonl()主机字节转换成网络字节顺序;
    ntohl()网络字节转换成主机字节顺序。
    其实这些东西都很简单的,只要调用一下这几个API就可以了。
    (注:如果使用CSOCKET的话,有时不需要考虑这些,因为CSOCKET已经做了这些工作。)