java server多线程_java socket 最简单的例子(server 多线程)

server 端

import java.io.*;import java.net.*;public classServer2 {/***@paramargs*/

public static voidmain(String[] args) {//TODO Auto-generated method stub

ServerSocket s = null;try{

s= new ServerSocket(5432);

}catch(IOException e)

{

System.out.println(e);

System.exit(1);

}int i = 1;while(true)

{try{

Socket cs=s.accept();newServerThread(cs).start();

System.out.println("接收了 第"+i+"个请求");

i++;

}catch(IOException e)

{

System.out.println(e);

}

}

}

}

serverThread 类

import java.io.*;

import java.net.*;

public class ServerThread extends Thread {

static String hello = "From Server: Hello world";

Socket sock;

public ServerThread(Socket s)

{

sock =s ;

}

public void run()

{

try{

InputStream in = sock.getInputStream();

DataInputStream din = new DataInputStream(in);

String name = din.readUTF();

OutputStream out = sock.getOutputStream();

DataOutputStream dos = new DataOutputStream(out);

dos.writeUTF(hello+"your name :"+name);

in.close();

out.close();

sock.close();

}

catch(IOException e)

{

System.out.println(e);

}

}

}

client 端

import java.io.*;

import java.net.*;

public class Client

{

public Client()

{

try

{

Socket s = new Socket("127.0.0.1", 5432);

OutputStream out = s.getOutputStream();

DataOutputStream dout = new DataOutputStream(out);

dout.writeUTF("oftenlin");

InputStream in = s.getInputStream();

DataInputStream din = new DataInputStream(in);

String st = din.readUTF();

System.out.println(st);

in.close();

out.close();

s.close();

}

catch (IOException e)

{}

}

public static void main(String[] args)

{

new Client();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中进行 Socket 通信时,我们可以使用多线程来实现同时与多个客户端进行通信。这种方式可以提高服务器的并发处理能力。 具体实现方法是,服务器端使用一个主线程监听客户端的连接请求,当有新的连接请求时,主线程创建一个新的线程来处理该客户端的请求。这样,每个客户端的请求都会在一个单独的线程中进行处理,互不影响。 以下是一个简单Java Socket 多线程服务器端代码示例: ```java import java.net.*; import java.io.*; public class MultiThreadServer implements Runnable { private Socket clientSocket; public MultiThreadServer(Socket clientSocket) { this.clientSocket = clientSocket; } public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("Server started"); while (true) { Socket clientSocket = serverSocket.accept(); System.out.println("Accepted connection from " + clientSocket); new Thread(new MultiThreadServer(clientSocket)).start(); } } public void run() { try { PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("Received message: " + inputLine); out.println("Message received: " + inputLine); } in.close(); out.close(); clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们创建了一个 MultiThreadServer 类来处理客户端请求。在 main 方法中,我们首先创建了一个 ServerSocket 并在端口 8080 上监听客户端连接请求。当有新的连接请求时,我们创建一个新的 MultiThreadServer 线程来处理该客户端的请求。 在 MultiThreadServer 类中,我们实现了 Runnable 接口,并重写了 run 方法。在 run 方法中,我们使用 BufferedReader 和 PrintWriter 来读取和发送消息。注意,在处理完一个客户端请求后,我们需要关闭连接。 以上就是一个简单Java Socket 多线程服务器端代码示例。通过这种方式,我们可以轻松实现高并发的 Socket 通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值