Java中使用ServerSocket和Socket的多线程示例
开始...
1、服务器端:
public class ServerSocketApp { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务已启动"); while (true) { Socket socket = serverSocket.accept(); System.out.println("客户" + socket.getInetAddress().getHostAddress() + "来访,"); new Thread(() -> { try { InputStream inputStream = socket.getInputStream(); PrintStream printStream = new PrintStream(socket.getOutputStream()); Scanner in = new Scanner(inputStream); in.useDelimiter("\n"); while (in.hasNext()) { String message = in.next().trim(); if (message.equalsIgnoreCase("bye")) { String bye = new String("客户端已退出,拜拜".getBytes("UTF-8")); System.out.println(bye); printStream.println(bye); } else { printStream.println("ECHO>" + message); } } } catch (IOException e) { e.printStackTrace(); } }).start(); } } catch (IOException e) { e.printStackTrace(); } }}
2、客户端程序:
public class ClientSocketApp { public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 9999); Scanner in = new Scanner(System.in); Scanner inputStream = new Scanner(socket.getInputStream()); PrintStream printStream = new PrintStream(socket.getOutputStream()); in.useDelimiter("\n"); inputStream.useDelimiter("\n"); boolean b = true; System.out.println("请输入:"); while (b) { if (in.hasNext()) { String message = in.next().trim(); printStream.println(message); if (inputStream.hasNext()) { String serverMessage = new String(inputStream.next().trim().getBytes("UTF-8")); System.out.println(serverMessage); } if (message.equalsIgnoreCase("bye")) { b = false; } } } socket.close(); }}
3、运行
服务器
cd com/kyy/bases/socket 运行javac ServerSocketApp.java
cd classpath根目录 运行java ServerSocketApp
服务器端启动
客户端
cd com/kyy/bases/socket 运行javac ClientSocketApp.java
cd classpath根目录 运行java ClientSocketApp
遇到的问题:
如果不通过eclipse、Idea等工具,会出现 “找不到或无法加载主类 com.kyy.bases.socket.ClientSocketApp”的异常
解决办法,设置classpath=.;"JAVA_HOME"/lib
或者在cmd窗口临时设置set classpath=.;
...结束
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。