不同编程语言访问的套接字可以通信吗?

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

【讨论】:

以上是关于不同编程语言访问的套接字可以通信吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java 网络编程 使用TCP/IP的套接字(Socket)进行通信

套接字通信

Linux编程设计——套接字

socket编程

Python爬虫第二课 网络编程基础

Python爬虫第二课 网络编程基础