java Socket多线程服务器源代码介绍

开发 后端
java Socket多线程在我们进行相关学习的时候需要注意不断出现的问题,下面我们就来看看在java Socket多线程中服务器的代码编写。

java Socket多线程需要我们不断的学习,在学习的时候我们就会发现在服务器的配置上有不少的问题。下面我们就来看看服务器源代码是如何编写的,以便大家更好的使用java Socket多线程。

import java.io.BufferedReader;   
import java.io.IOException;   
import java.io.InputStreamReader;   
import java.io.PrintWriter;   
import java.net.ServerSocket;   
import java.net.Socket;   
import java.util.ArrayList;   
import java.util.List;   
import java.util.concurrent.ExecutorService;   
import java.util.concurrent.Executors;   
public class ChatServer {   
private static final int PORT = 1234; // 端口号   
private static List<Socket> list = new ArrayList<Socket>(); 
// 保存连接对象   
private ExecutorService exec;    private ServerSocket server;    public static void main(String[] args) {    new ChatServer();    }    public ChatServer() {    try {    server = new ServerSocket(PORT);    exec = Executors.newCachedThreadPool();    System.out.println(“服务器已启动!”);    Socket client = null;    while (true) {    client = server.accept(); // 接收客户连接    list.add(client);    exec.execute(new ChatTask(client));    }    } catch (IOException e) {    e.printStackTrace();    }    }    static class ChatTask implements Runnable {    private Socket socket;    private BufferedReader br;    private PrintWriter pw;    private String msg;    public ChatTask(Socket socket) throws IOException {    this.socket = socket;    br = new BufferedReader(new InputStreamReader(socket    .getInputStream()));    msg = “【” + this.socket.getInetAddress() + “】
进入聊天室!当前聊天室有【”   
+ list.size() + “】人”;    sendMessage();    }    public void run() {    try {    while ((msg = br.readLine()) != null) {    if (msg.trim().equals(“bye”)) {    list.remove(socket);    br.close();    pw.close();    msg = “【” + socket.getInetAddress() + “】
离开聊天室!当前聊天室有【”   
+ list.size() + “】人”;    socket.close();    sendMessage();    break;    } else {    msg = “【” + socket.getInetAddress() + “】说:” + msg;    sendMessage();    }    }    } catch (IOException e) {    e.printStackTrace();    }    }    /**    * 群发消息给聊天室的所有人    */    private void sendMessage() throws IOException {    System.out.println(msg);    for (Socket client : list) {    pw = new PrintWriter(client.getOutputStream(), true);    pw.println(msg);    }    }    }    }    import java.io.BufferedReader;    import java.io.InputStreamReader;    import java.io.PrintWriter;    import java.net.Socket;    import java.util.concurrent.ExecutorService;    import java.util.concurrent.Executors;    public class ChatClient {    private static final int PORT = 7891;    private static ExecutorService exec = 
Executors.newCachedThreadPool();    public static void main(String[] args) throws Exception {    new ChatClient();    }    public ChatClient() {    try {    Socket socket = new Socket(“221.130.165.41″, PORT);    exec.execute(new Sender(socket));    System.out.println(“【” + socket.getInetAddress() + “】
您好,欢迎来到简易聊天室!”);   
BufferedReader br = new BufferedReader(new 
InputStreamReader(socket.getInputStream()));   
String msg;    while ((msg = br.readLine()) != null) {    System.out.println(“收到—->”+msg);    }    } catch (Exception e) {    }    }  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.

 

以上就是对java Socket多线程的相关介绍。

【编辑推荐】

  1. Java多线程程序设计初步
  2. Java进阶:Java多线程之ThreadLocal
  3. 初学Java多线程:线程简介
  4. 深入浅出Java多线程程序设计
  5. 实战Java多线程编程之不提倡的方法
责任编辑:张浩 来源: 互联网
相关推荐

2010-03-19 14:01:55

Java Socket

2010-03-19 16:51:53

Java Socket

2010-03-19 15:01:23

Java Socket

2010-03-19 09:26:34

Java Socket

2009-02-18 10:41:16

多线程服务器稳定Java

2010-03-18 20:00:35

Java socket

2009-02-27 11:15:00

多线程服务器MTS专用服务器

2010-03-17 19:24:38

Java多线程循环

2010-03-16 10:50:21

Java多线程服务器

2011-03-01 16:19:27

FileZilla

2011-03-01 16:32:58

FileZilla

2011-03-01 16:01:08

FileZilla

2011-12-08 13:04:06

JavaNIO

2011-03-01 16:25:37

FileZilla

2010-03-16 15:54:52

2010-03-16 13:47:48

Java多线程服务器

2010-03-18 19:39:44

Java Socket

2018-12-20 09:36:24

2011-06-30 18:03:58

QT 多线程 服务器

2011-07-22 14:55:20

多线程
点赞
收藏

51CTO技术栈公众号