Java中使用ServerSocket和Socket的多线程示例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=.;
...结束
以上是关于Java中使用ServerSocket和Socket的多线程示例的主要内容,如果未能解决你的问题,请参考以下文章
Java中使用ServerSocket和Socket的多线程示例
Java]Socket和ServerSocket服务器端接受数据