关于Java中的Socket类

时间:2013-07-08 03:10:39

标签: java sockets network-programming

Java中的套接字类可以用于与非Java应用程序通信吗?我知道TCP / IP是一个独立的协议套件,但我不确定Java类。

1 个答案:

答案 0 :(得分:2)

是。他们当然可以:

  

“Java平台中的java.net包提供了一个类Socket,它实现了网络上的Java程序和另一个程序之间的双向连接的一面。 “

重点补充。请注意,它没有说“另一个Java程序”。

参考:

实际上,Java Socket类是操作系统提供的本机套接字API的瘦“包装器”。所有协议实现的东西都在该API的另一端的操作系统中处理。用其他语言编写的程序也将直接使用本机套接字API,或通过Java的Socket类等效。


我还应该纠正@ rcook评论中的一些技术错误:

  1. java Socket类或本机套接字API 都不实现 TCP / IP和其他协议。实际的网络协议实现是在本地套接字API之后完成的......甚至可能在连接的处理器中完成。

  2. Socket类不读写“消息”。它读取和写入可能是应用程序级消息的字节。将字节捆绑到网络数据包中由TCP / IP堆栈透明地处理。

    (如果你想要一个进行网络级消息传递的类,那么DatagramSocket是你之后的...模数只能发送某些消息。)

  3. 实际上,不正确表示套接字/ Socket类是/可用于与其他程序进行通信。如果忽略了细节实现细节,那么“通信”对于程序使用套接字时发生的事情来说是一个很好的术语。 “沟通”这个词在IT中的含义远远超过“发送消息”。