我有从Java客户端发送int到C++服务器的问题。我不想改变服务器的代码(我听到有关htonl的一些信息)。现在从客户端13928(0011 0110 0110 1000)发送我的服务器6829568(0110 1000 0011 0110 0000 0000)。有没有Java的任何功能类似于htonl?如何通过套接字发送int C++服务器/ Java客户端
回答
更改服务器的代码。它坏了。
问题是服务器“理解”的格式实际上根据其CPU架构而不同。 Java正在发送标准网络字节顺序,这是正确的事情 - 服务器然后必须ntohl()
将其转换为其内部格式。改变客户端代码以包含关于服务器端序的假设是一个非常糟糕的主意。
你肯定不知道。这当然是可能的,但服务器也可能会说明使用little-endian字节排序的明确定义的协议。 – 2012-04-19 08:07:09
@David Schwartz:呃,我是在假设OP对htonl的引用是相关的假设下运作的。 – 2012-04-19 08:15:23
在这些情况下,我将endian处理卸载到客户端。服务器以其本地端序进行操作/通信。客户端执行endian处理,只有当它与服务器不同时... – Malkocoglu 2012-04-19 10:20:39
只是做数学。使用位移,逻辑AND和逻辑OR。例如,提取四个八位字节,你可以使用:
x & 0xff
(x >> 8) & 0xff
(x >> 16) & 0xff
(x >> 24) % 0xff
相反>> 8
,你可以使用/ 256
。您可以使用% 256
而不是& 0xff
。把操作放在一起。
查看XDR,这个定义了客户端和服务器之间通信时应该使用的标准。如果可能的话,将cleint的int复制到一个字符串中,然后将该字符串发送给服务器,并将字符串转换为整数。这是发送int最有效的方式。
- 1. 从Java客户端通过套接字写入int到c服务器
- 2. Arduino客户端通过套接字向Java服务器发送数据
- 3. Java客户端/服务器通过套接字发送对象问题
- 4. C套接字服务器,Java套接字客户端:阻塞!
- 5. Java套接字从客户端发送数据到服务器
- 6. 套接字,java发送文件服务器客户端
- 7. Java套接字 - 从客户端发送文件到服务器
- 8. 套接字java客户端服务器
- 9. Java套接字客户端/服务器
- 10. 客户端服务器套接字C#
- 11. 如何在客户端启动服务器时通过套接字'C'将消息发送到服务器?
- 12. 通过套接字传输文件客户端服务器java
- 13. 使用TCP通过套接字从服务器端发送ArrayList到客户端
- 14. 套接字通信,Java客户端C服务器
- 15. Unity3D通过套接字服务器发送类 - 客户端通信
- 16. 通过套接字从客户端发送字符串到服务器
- 17. Java - 通过套接字发送文件(聊天客户端 - >服务器 - >另一个聊天客户端)
- 18. Java套接字服务器,C#套接字客户端,通信问题?
- 19. 通过套接字发送int,c,C++
- 20. 如何通过套接字将数据从c#客户端发送到java服务器?
- 21. 通过TCP与c + +(套接字服务器)conect android(套接字客户端)
- 22. Java套接字。服务器端与客户端通讯
- 23. C++套接字,客户端无法发送消息到java服务器
- 24. 通过套接字发送多个变量从客户端到服务器
- 25. 通过套接字发送缓存的图像从客户端到服务器
- 26. Python套接字客户端到Java套接字服务器
- 27. 通过套接字客户端服务器通信
- 28. 客户端通过套接字连接多台服务器
- 29. 客户端套接字发送,但静默服务器套接字不接收
- 30. 套接字服务器 - 发送消息从客户端到客户端
如何将13928转换为客户端上的字节,以及如何将字节转换为服务器上的6829568? – 2012-04-19 07:23:03