Java网络编程:Socket和ServerSocket通信案例

原创 Love The Way You Lie 2024-12-09 03:39 76阅读 0赞

在Java中,Socket和ServerSocket是实现客户端与服务器端通信的重要类。以下是一个简单的案例来演示它们的使用。

  1. 客户端(创建Socket连接到服务器)
  1. import java.io.*;
  2. import java.net.*;
  3. public class Client {
  4. public static void main(String[] args) {
  5. try {
  6. // 创建Socket对象
  7. Socket socket = new Socket("localhost", 1234); // "localhost"是服务器地址,1234是服务端的监听端口
  8. // 获取输出流
  9. OutputStream outputStream = socket.getOutputStream();
  10. // 发送数据(这里以字符串为例)
  11. String message = "Hello, Server!";
  12. byte[] bytes = message.getBytes("UTF-8"); // "UTF-8"是字符集,确保在服务器端接收的数据也是这种格式
  13. // 向输出流写入数据
  14. outputStream.write(bytes);
  15. // 关闭连接(Socket会自动关闭连接,但如果需要明确处理,则需要手动关闭)
  16. socket.close();
  17. System.out.println("Message sent successfully!");
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. System.out.println("Error occurred while sending message.");
  21. }
  22. }
  23. }
  1. 服务器端(创建ServerSocket监听客户端连接)
  1. import java.io.*;
  2. import java.net.*;
  3. public class Server {
  4. public static void main(String[] args) {
  5. try {
  6. // 创建ServerSocket对象,指定监听的端口
  7. ServerSocket serverSocket = new ServerSocket(1234); // 1234是服务端的监听端口
  8. // 接受客户端连接(一个Socket实例会被返回,代表与客户端的通信)
  9. Socket socket = serverSocket.accept(); // 阻塞等待客户端连接
  10. System.out.println("Client connected successfully!");
  11. // 获取输入流和输出流
  12. InputStream inputStream = socket.getInputStream();
  13. OutputStream outputStream = socket.getOutputStream();
  14. // 读取客户端发送的数据(这里以字符串为例)
  15. byte[] bytes = new byte[1024]; // 设置接收数据的大小,可以根据实际需求调整
  16. int lengthRead = inputStream.read(bytes); // 没有明确指定读取的长度,Java会自动处理
  17. // 发送数据给客户端(这里以回显字符串为例)
  18. outputStream.write(bytes, 0, lengthRead)); // 将读取到的数据写回到输出流中
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. System.out.println("Error occurred while handling client connection.");
  22. }
  23. }
  24. }

这个案例展示了如何通过Socket和ServerSocket进行简单的客户端与服务器端的通信。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,76人围观)

还没有评论,来说两句吧...

相关阅读