不同编程语言中的套接字能够通信吗?

9

套接字是否与编程语言无关?

我能否保留使用Java编写的服务器和使用C编写的客户端?

3个回答

21

当然。否则,编写网页浏览器和服务器就会变得非常困难,这只是一个例子......

当然,你通过套接字传输的数据可能更易于用一种语言阅读,而不是另一种语言 - 例如,如果你使用Java的DataOutputStream,则使用Java在另一端读取数据将更容易管理。但你仍然可以读取那些数据,因为其格式已经有很好的文档说明。

如果你在网络中传输的数据是绝对特定于平台的,那么情况会变得更加困难 - 例如,从非Java平台使用使用Java的ObjectOutputStream序列化的对象会很棘手。

但是,在原始套接字层面上,并没有语言的概念来限制程序源代码所使用的编程语言。


2
一个TCP Socket通过二进制数据流进行通信。许多语言都有一些功能,可以在这个堆栈的顶部进行通信以使其更容易,但在最简单的情况下,它只是二进制数据。
如果你想在两种不同的语言之间进行通信,只需避免使用任何自定义序列化语言,并坚持使用像简单字符串来回传递的东西。

2
是的。这就是协议(TCP/UDP)的目的,它们设定了通信规则。
请查看此线程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接