首页 > 开发 > Java > 正文

Java网络通信基础编程(必看篇)

2024-07-13 10:07:54
字体:
来源:转载
供稿:网友

方式一:同步阻塞方式(BIO):

服务器端(Server):

package com.ietree.basicskill.socket.mode1;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * 服务端 */public class Server {  // 端口号  final static int PORT = 8765;  public static void main(String[] args) {    ServerSocket server = null;     try {      server = new ServerSocket(PORT);      System.out.println("Server start......");      // 进行阻塞      Socket socket = server.accept();      // 创建一个程序执行客户端的任务      new Thread(new ServerHandler(socket)).start();          } catch (IOException e) {      e.printStackTrace();    } finally {      if(server != null){        try {          server.close();        } catch (IOException e) {          e.printStackTrace();        }      }      server = null;    }  }}

采用多线程来处理接收到的请求(ServerHandler):

package com.ietree.basicskill.socket.mode1;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ServerHandler implements Runnable {  private Socket socket;  public ServerHandler(Socket socket) {    this.socket = socket;  }  @Override  public void run() {    BufferedReader in = null;    PrintWriter out = null;    try {      in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));      out = new PrintWriter(this.socket.getOutputStream(), true);      String body = null;      while (true) {        body = in.readLine();        if(body == null){          break;        }        System.out.println("Server: " + body);        out.println("服务器端回送响应的数据。");      }    } catch (Exception e) {      e.printStackTrace();    } finally {      if(in != null){        try {          in.close();        } catch (IOException e) {          e.printStackTrace();        }      }      if(out != null){        try {          out.close();        } catch (Exception e) {          e.printStackTrace();        }      }      if(socket != null){        try {          socket.close();        } catch (IOException e) {          e.printStackTrace();        }      }      socket = null;    }  }}

客户端(Client):

package com.ietree.basicskill.socket.mode1;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;/** * 客户端 */public class Client {  final static String ADDRESS = "127.0.0.1";  final static int PORT = 8765;  public static void main(String[] args) {    Socket socket = null;    BufferedReader in = null;    PrintWriter out = null;    try {      socket = new Socket(ADDRESS, PORT);      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));      out = new PrintWriter(socket.getOutputStream(), true);            // 向服务器端发送数据      out.println("接收到客户端的请求数据......");      String response = in.readLine();      System.out.println("Client: " + response);    } catch (Exception e) {      e.printStackTrace();    } finally {      if(in != null){        try {          in.close();        } catch (IOException e) {          e.printStackTrace();        }      }      if(out != null){        try {          out.close();        } catch (Exception e) {          e.printStackTrace();        }      }      if(socket != null){        try {          socket.close();        } catch (IOException e) {          e.printStackTrace();        }      }      socket = null;    }  }}

程序输出:

Server:

Server start......Server: 接收到客户端的请求数据......

Client:

Client: 服务器端回送响应的数据。

同步非阻塞(NIO)

异步非阻塞(AIO)

以上这篇Java网络通信基础编程(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表