如何使用Java进行网络编程,如Socket通信?

原创 比眉伴天荒 2024-10-05 19:45 65阅读 0赞

在Java中,我们可以使用java.net.Socketjava.net.ServerSocket来进行Socket通信。

以下是一个基本的客户端和服务器端的例子:

客户端(创建Socket连接到服务器):

  1. import java.io.*;
  2. import java.net.*;
  3. public class Client {
  4. public static void main(String[] args) throws IOException {
  5. // 创建一个Socket对象
  6. Socket socket = new Socket("localhost", 1234); // "localhost"是服务器的IP地址
  7. // 创建一个OutputStream对象,用于向服务器发送数据
  8. OutputStream outputStream = socket.getOutputStream();
  9. // 发送字符串到服务器
  10. outputStream.write("Hello, Server!".getBytes()); // .getBytes()将字符串转换为字节数组
  11. // 关闭输出流和Socket
  12. outputStream.close();
  13. socket.close();
  14. }
  15. }

服务器端(创建ServerSocket监听客户端连接):

  1. import java.io.*;
  2. import java.net.*;
  3. public class Server {
  4. public static void main(String[] args) throws IOException {
  5. // 创建一个ServerSocket对象,用于监听客户端的连接
  6. ServerSocket serverSocket = new ServerSocket(1234); // 1234是端口号
  7. // 监听客户端的连接
  8. while (true) {
  9. Socket socket = serverSocket.accept(); // accept()方法会阻塞直到有新的客户端连接到来
  10. // 创建一个InputStream对象,用于从客户端读取数据
  11. InputStream inputStream = socket.getInputStream();
  12. // 使用 BufferedReader 读取字节流
  13. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)));
  14. // 从客户端接收消息
  15. String messageFromClient = bufferedReader.readLine(); // .readLine()会返回当前行的所有字符,包括换行符
  16. // 向客户端发送消息
  17. OutputStream outputStreamToClient = socket.getOutputStream();
  18. outputStreamToClient.write("Hello, Client!".getBytes()); // .getBytes()将字符串转换为字节数组
  19. // 关闭Socket、InputStream和OutputStream
  20. bufferedReader.close();
  21. inputStream.close();
  22. outputStreamToClient.close();
  23. // 清理服务器Socket,以便等待新的客户端连接到来
  24. serverSocket.setSoTimeout(0); // 设置超时时间为0,表示立即关闭ServerSocket,释放资源
  25. }
  26. }
  27. }

以上代码中,客户端发送一条消息到服务器,然后服务器将该消息返回给客户端。服务器端会一直监听客户端的连接,并在接收到客户端的消息后进行响应。

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

发表评论

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

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

相关阅读

    相关 使用网络编程进行 socket 通信

    > 如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持! 一、网络编程和so