温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Socket编程关键代码是什么

发布时间:2021-12-01 17:04:31 来源:亿速云 阅读:130 作者:iii 栏目:编程语言

本篇内容介绍了“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. }  

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI