关于ServerSockets和套接字

时间:2014-03-01 12:38:36

标签: java

我开始使用java联系并提出一些问题。任何人都可以向我清楚这些问题吗?   套接字和服务器套接字有什么区别?   ServerSocket是否意味着与服务器相关的东西?

1 个答案:

答案 0 :(得分:2)

是的,我可以向您解释一下:ServerSocket是服务器端套接字。它需要防火墙中的开放端口和其他客户端的LISTEN才能连接到您的计算机。 “正常”Socket只是询问连接的服务器。这不需要防火墙中的开放端口。您在互联网上所做的一切都要求您的计算机在互联网上提供服务器以进行连接。但是服务器必须LISTEN才能建立连接。因此,使用ServerSocket,您可以接受这些请求并创建连接:

ServerSocket server = new ServerSocket(<port>);
Socket client = server.accept();

这是服务器端代码,它创建一个ServerSocket来侦听连接请求并创建一个正常的Socket来使用此连接。客户端应用程序将如下连接:

Socket skt = new Socket(<ip>, <port>);

这也将创建一个socket,可以使用该连接。但它需要serverSocket,它接受​​连接请求。

希望,这对你有帮助

Cydhra

P.S英语不是我的母语,所以我很抱歉错误。

编辑:

  

请你解释一下server.accept()做什么

此方法等待客户端请求连接。因此,如果您的应用程序在等待连接时应该执行某些操作,则应使用一个线程,因为您的程序将停止,直到server.accept()收到请求。

server.accept()等待客户端请求在指定端口上与此服务器建立连接。当客户端请求这样的连接时,accept() - Method将返回表示客户端的Socket实例。它包含输入和输出流,可用于从客户端发送和接收数据。

Socket skt = new Socket(<port>, <ip>);

这是我在上面发布的客户端代码。它还包含输入和输出流。您在一个Socket的OutputStream中编写的所有内容都将由另一个Socket的InputStream接收。套接字就像文件一样,有两个端点:一端是你写的,另一边是你可以阅读的。