不同编程语言访问的套接字可以通信吗?
Posted
技术标签:
【中文标题】不同编程语言访问的套接字可以通信吗?【英文标题】:Can sockets accessed in different programming languages communicate? 【发布时间】:2011-02-24 07:33:48 【问题描述】:套接字是否独立于编程语言?
我可以保持用 Java 编写的服务器和用 C 编写的客户端吗?
【问题讨论】:
【参考方案1】:当然。否则就很难写一个网络浏览器和一个网络服务器,只是作为一个例子......
当然,您通过套接字通信的数据可能比另一种语言更容易阅读 - 例如,如果您使用 Java 的 DataOutputStream
,那么使用 Java 管理起来会更容易在另一端读取数据。但您仍然可以读取该数据,因为格式有据可查。
但是,如果您将绝对特定于平台的数据放在网络上,这会使事情变得更加困难 - 例如,在非 Java 平台上使用通过 Java 的 ObjectOutputStream
序列化的对象会很棘手。
但在原始套接字级别,不知道源代码碰巧是用哪种编程语言编写的。
【讨论】:
【参考方案2】:TCP Socket 通过二进制数据流进行通信。许多语言都具有位于该堆栈顶部以使通信更容易的功能,但最简单的只是二进制数据。
如果您想在两种不同的语言之间进行通信,请避免对语言进行任何自定义序列化,并坚持使用简单的东西,例如来回传递简单的字符串。
【讨论】:
【参考方案3】:是的。这就是协议(TCP/UDP)的思想来设置通信应该如何发生的规则。
查看this thread
【讨论】:
以上是关于不同编程语言访问的套接字可以通信吗?的主要内容,如果未能解决你的问题,请参考以下文章