下面给你详细讲解一下“Java Socket编程(三) 服务器Sockets”的完整攻略。
1. 简介
在Socket编程中,服务器socket是一个能够运行在网络上的程序。它采用一种协议来监听和处理客户端请求。在Java程序中,使用ServerSocket类来创建服务器socket。当服务器socket接收到来自客户端的连接请求时,它会把连接套接字(Client Socket)返回给客户端,客户端可以使用这个连接套接字与服务器socket进行通信。
2. 创建服务器socket
使用ServerSocket类创建服务器socket的语法如下:
ServerSocket serverSocket = new ServerSocket(port);
- port: 整数类型,表示要监听的端口号。
3. 监听客户端请求
使用ServerSocket类的accept()方法监听客户端请求。该方法会阻塞程序执行,直到有客户端连接请求到达服务器socket。
Socket clientSocket = serverSocket.accept();
上面的代码中,clientSocket是一个从服务器socket返回的连接套接字。可以使用它与客户端进行通信。
4. 与客户端通信
可以使用连接套接字与客户端进行通信。可以通过输入输出流来进行数据的读写操作。在服务器端,需要使用InputStream和OutputStream来读写数据。
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream();
可以使用InputStream的read()方法来读取来自客户端的数据,使用OutputStream的write()方法来向客户端写入数据。
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
outputStream.write(buffer, 0, length);
上面的代码中,buffer是一个byte数组,用于存储从客户端读取的数据。length是读取到的数据的长度。使用outputStream的write()方法把读取到的数据发送给客户端。
5. 关闭连接
在服务器socket端,可以通过关闭连接套接字来关闭与客户端的连接。
clientSocket.close();
6. 示例说明
下面给出两个示例来说明如何使用Java ServerSocket类创建服务器socket。
示例1
该示例中创建一个简单的服务器socket,它监听8080端口,并向客户端返回当前时间。具体代码如下:
import java.io.*;
import java.net.*;
public class ServerSocketDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("New connection from " + clientSocket.getInetAddress());
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println(new java.util.Date().toString());
clientSocket.close();
}
}
}
示例2
该示例中创建一个简单的服务器socket,它监听8080端口,并将客户端发来的请求内容原样返回。具体代码如下:
import java.io.*;
import java.net.*;
public class ServerSocketDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("New connection from " + clientSocket.getInetAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
clientSocket.close();
}
}
}
以上就是创建Java服务器socket的完整攻略,希望可以帮到你!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket编程(三) 服务器Sockets - Python技术站