Java 跨平台和跨语言的客户端/服务器应用程序连接

Java 跨平台和跨语言的客户端/服务器应用程序连接,java,c++,c,tcp,Java,C++,C,Tcp,我一直在互联网上寻找这个问题的答案,但我找不到任何与我的确切问题相关的答案 问题是:假设我有一个32位Linux上的服务器,用C编写。然后我有一个连接到该服务器的客户端应用程序,它在Windows 64位上运行,客户端用Java编写。现在,当这两个人交流时,会不会有问题 Java字符类型为2字节,C字符类型为1字节。从我正在阅读的内容来看,一些Java字符甚至可以是1字节,这是为该字符分配的默认内存。如果我要向服务器发送char,会不会有问题 更一般地说,我如何在TCP/UDP之上设计一个独立于

我一直在互联网上寻找这个问题的答案,但我找不到任何与我的确切问题相关的答案

问题是:假设我有一个32位Linux上的服务器,用C编写。然后我有一个连接到该服务器的客户端应用程序,它在Windows 64位上运行,客户端用Java编写。现在,当这两个人交流时,会不会有问题

Java字符类型为2字节,C字符类型为1字节。从我正在阅读的内容来看,一些Java字符甚至可以是1字节,这是为该字符分配的默认内存。如果我要向服务器发送char,会不会有问题

更一般地说,我如何在TCP/UDP之上设计一个独立于不同操作系统和编程语言类型大小的通信协议?我将如何通过网络发送数据?比如字符,整数,数组,对象


请随意添加任何和所有文章,以便您认为与我的问题非常相关的问题和其他资源。

这一切都是通过RPC(远程过程调用)和XDR(外部数据表示)解决的。请参阅关于xdr的,以及关于rpc和xdr的本文档,以及本文档,以及
man rpc
man xdr


显然,这些都是为供C使用而描述的。

Java客户端不应该发送或接收字符,它应该发送和接收一个字节流,如果需要,它可以从/转换为字符流。什么?想一想。你可以在网上连接到各种各样的网站,是吗?您是否见过“服务器操作系统错误”或“服务器CPU宽度错误”错误?不,所以…我想你必须用字节发送。将所有数据类型转换为字节并通过TCP/IP发送。这就是为什么我们有协议。它们是以独立于平台的方式定义的。例如,按顺序存储在网络中的固定大小整数。我必须从java向服务器发送一些文本。然后我将其转换为字节并发送到C服务器。但是我收到128个字节,只代表64个字符,因为Java对每个字符使用2个字节(假设情况就是这样)。我该如何处理呢?更不用说XML-RPC和JSONRPC了,它们使用各自基于文本的格式来做同样的事情。