千家信息网

Java Socket编程关键代码是什么

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"Java Socket编程关键代码是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年02月06日Java Socket编程关键代码是什么

本篇内容介绍了"Java Socket编程关键代码是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  1. package sterning;

  2. import java.io.BufferedReader;

  3. import java.io.IOException;

  4. import java.io.InputStream;

  5. import java.io.InputStreamReader;

  6. import java.io.OutputStream;

  7. import java.io.PrintWriter;

  8. import java.net.*;

  9. import java.util.concurrent.*;

  10. public class MultiThreadServer {

  11. private int port=8821;

  12. private ServerSocket serverSocket;

  13. private ExecutorService executorService;//线程池

  14. private final int POOL_SIZE=10;//单个CPU线程池大小

  15. public MultiThreadServer() throws IOException{

  16. serverSocket=new ServerSocket(port);

  17. //Runtime的availableProcessor()方法返回当前系统的CPU数目.

  18. executorService=Executors.newFixedThreadPool
    (Runtime.getRuntime().availableProcessors()*POOL_SIZE);

  19. System.out.println("服务器启动");

  20. }

  21. public void service(){

  22. while(true){

  23. Socket socket=null;

  24. try {

  25. //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接

  26. socket=serverSocket.accept();

  27. executorService.execute(new Handler(socket));

  28. } catch (Exception e) {

  29. e.printStackTrace();

  30. }

  31. }

  32. }

  33. public static void main(String[] args) throws IOException {

  34. new MultiThreadServer().service();

  35. }

  36. }

  37. class Handler implements Runnable{

  38. private Socket socket;

  39. public Handler(Socket socket){

  40. this.socket=socket;

  41. }

  42. private PrintWriter getWriter(Socket socket) throws
    IOException{

  43. OutputStream socketsocketOut=socket.getOutputStream();

  44. return new PrintWriter(socketOut,true);

  45. }

  46. private BufferedReader getReader(Socket socket) throws
    IOException{

  47. InputStream socketsocketIn=socket.getInputStream();

  48. return new BufferedReader(new InputStreamReader
    (socketIn));

  49. }

  50. public String echo(String msg){

  51. return "echo:"+msg;

  52. }

  53. public void run(){

  54. try {

  55. System.out.println("New connection accepted "+
    socket.getInetAddress()+":"+socket.getPort());

  56. BufferedReader br=getReader(socket);

  57. PrintWriter pw=getWriter(socket);

  58. String msg=null;

  59. while((msg=br.readLine())!=null){

  60. System.out.println(msg);

  61. pw.println(echo(msg));

  62. if(msg.equals("bye"))

  63. break;

  64. }

  65. } catch (IOException e) {

  66. e.printStackTrace();

  67. }finally{

  68. try {

  69. if(socket!=null)

  70. socket.close();

  71. } catch (IOException e) {

  72. e.printStackTrace();

  73. }

  74. }

  75. }

  76. }

"Java Socket编程关键代码是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0