Java ServerSocket的服务端代码介绍

Java ServerSocket的服务端代码介绍

所谓Java ServerSocket通常也称作"套接字",有不少的时候需要我们详细的注意。接下来我们就看看什么是Java ServerSocket,希望大家有所收获。用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在 连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服 务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

下面给出一个最简单的Socket通信的例子供初学者参考:

服务器端:

 
 
  1.  
  2.  
  3. import java.io.DataInputStream;   
  4. import java.io.DataOutputStream;   
  5. import java.io.IOException;   
  6. import java.net.ServerSocket;   
  7. import java.net.Socket;   
  8. public class ServerDemo {   
  9. /**   
  10. * 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,   
  11. * 而后才可以向客户端发送信息,否则将会有运行时出错。   
  12. * @param args   
  13. */   
  14. public static void main(String[] args) {   
  15. ServerSocket ss = null;   
  16. try {   
  17. ss = new ServerSocket(8888);   
  18. //服务器接收到客户端的数据后,创建与此客户端对话的Socket   
  19. Socket socket = ss.accept();   
  20. //用于向客户端发送数据的输出流   
  21. DataOutputStream dos = new DataOutputStream(socket.getOutputStream());   
  22. //用于接收客户端发来的数据的输入流   
  23. DataInputStream dis = new DataInputStream(socket.getInputStream());   
  24. System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());   
  25. //服务器向客户端发送连接成功确认信息   
  26. dos.writeUTF("接受连接请求,连接成功!");   
  27. //不需要继续使用此连接时,关闭连接   
  28. socket.close();   
  29. ss.close();   
  30. } catch (IOException e) {   
  31. e.printStackTrace();   
  32. }   
  33. }   
  34. }  

以上就是对Java ServerSocket的相关介绍希望大家有所收获。



以下是一个简单的 Java Socket 服务端代码示例: ```java import java.net.*; import java.io.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); // 监听端口号为8888 } catch (IOException e) { System.err.println("Could not listen on port: 8888."); System.exit(1); } Socket clientSocket = null; System.out.println("Waiting for connection..."); try { clientSocket = serverSocket.accept(); // 等待客户端连接 } catch (IOException e) { System.err.println("Accept failed."); System.exit(1); } System.out.println("Connection successful!"); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { // 不断接收客户端发送的消息 System.out.println("Received message: " + inputLine); out.println("Server received message: " + inputLine); // 回复客户端 if (inputLine.equals("Bye.")) // 如果客户端发送了 "Bye.",则退出循环 break; } out.close(); in.close(); clientSocket.close(); serverSocket.close(); } } ``` 说明: 1. 该服务端代码创建了一个 ServerSocket 对象,并监听端口号为 8888。 2. 通过调用 `accept()` 方法等待客户端的连接请求,一旦收到请求,则返回一个 Socket 对象,该对象与客户端的 Socket 对象连接起来。 3. 利用该 Socket 对象获取输入流和输出流,并通过输入流接收客户端发送的消息,通过输出流发送消息给客户端。 4. 循环接收客户端发送的消息,如果客户端发送了 "Bye.",则退出循环。 5. 最后关闭输入流、输出流、客户端 Socket 对象和服务端 ServerSocket 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值