自制工具 翰华Box:https://hanhuabox.lanzous.com/b00zjq9uf
翰华Box – 开发日志:https://blog.csdn.net/_/article/details/
【翰华Box】RPG移动迷宫:https://blog.csdn.net/_/article/details/
Socket 类
ServerSocket类
ServerSocket详解:https://www.jianshu.com/p/c2e784
ServerSocket serverSocket=new ServerSocket(); serverSocket.setReuseAddress(true); //设置 ServerSocket 的选项 serverSocket.bind(new InetSocketAddress(8080)); //与 8080 端口绑定
把以上程序改成
ServerSocket serverSocket=new ServerSocket(8080); serverSocket.setReuseAddress(true); //设置 ServerSocket 的选项
ServerSocket serverSocket = new ServerSocket(port,3);
package com.zhoufenqin.socket.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class Client { public static final int port = 8080; public static final String host = "localhost"; public static void main(String[] args) { System.out.println("Client Start..."); while (true) { Socket socket = null; try { //创建一个流套接字并将其连接到指定主机上的指定端口号 socket = new Socket(host,port); //读取服务器端数据 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); //向服务器端发送数据 PrintStream out = new PrintStream(socket.getOutputStream()); System.out.print("请输入: \t"); String str = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.println(str); String ret = input.readLine(); System.out.println("服务器端返回过来的是: " + ret); // 如接收到 "OK" 则断开连接 if ("OK".equals(ret)) { System.out.println("客户端将关闭连接"); Thread.sleep(500); break; } out.close(); input.close(); } catch (Exception e) { System.out.println("客户端异常:" + e.getMessage()); } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { socket = null; System.out.println("客户端 finally 异常:" + e.getMessage()); } } } } } }
Server代码:
package com.zhoufenqin.socket.server; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static final int port = 8080;//监听的端口号 public static void main(String[] args) { System.out.println("Server...\n"); Server server = new Server(); server.init(); } public void init() { try { //创建一个ServerSocket,这里可以指定连接请求的队列长度 //new ServerSocket(port,3);意味着当队列中有3个连接请求是,如果Client再请求连接,就会被Server拒绝 ServerSocket serverSocket = new ServerSocket(port); while (true) { //从请求队列中取出一个连接 Socket client = serverSocket.accept(); // 处理这次连接 new HandlerThread(client); } } catch (Exception e) { System.out.println("服务器异常: " + e.getMessage()); } } private class HandlerThread implements Runnable { private Socket socket; public HandlerThread(Socket client) { socket = client; new Thread(this).start(); } public void run() { try { // 读取客户端数据 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); String clientInputStr = input.readLine();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException // 处理客户端数据 System.out.println("客户端发过来的内容:" + clientInputStr); // 向客户端回复信息 PrintStream out = new PrintStream(socket.getOutputStream()); System.out.print("请输入:\t"); // 发送键盘输入的一行 String s = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.println(s); out.close(); input.close(); } catch (Exception e) { System.out.println("服务器 run 异常: " + e.getMessage()); } finally { if (socket != null) { try { socket.close(); } catch (Exception e) { socket = null; System.out.println("服务端 finally 异常:" + e.getMessage()); } } } } } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199354.html原文链接:https://javaforall.net
