自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java Socket實戰(zhàn)之一:單線程通信

開發(fā) 后端
現(xiàn)在做Java直接使用Socket的情況是越來越少,因為有很多的選擇可選,比如說可以用spring,其中就可以支持很多種遠(yuǎn)程連接的操作,另外jboss的remoting也是不錯的選擇,還有Apache的Mina等等,但是在有些時候一些特殊情況仍然逃脫不了直接寫Socket的情況,比如公司內(nèi)部一些莫名其妙的游戲規(guī)則。

現(xiàn)在做Java直接使用Socket的情況是越來越少,因為有很多的選擇可選,比如說可以用spring,其中就可以支持很多種遠(yuǎn)程連接的操作,另外jboss的remoting也是不錯的選擇,還有Apache的Mina等等,但是在有些時候一些特殊情況仍然逃脫不了直接寫Socket的情況,比如公司內(nèi)部一些莫名其妙的游戲規(guī)則。

廢話不說了,下面就看看如果自己寫Socket應(yīng)該怎么做吧。

首先是寫一個Server類,這個類用來監(jiān)聽10000端口,并從這個端口接收消息然后輸出,當(dāng)收到“bye”時退出。

  1. package com.googlecode.garbagecan.test.socket.sample1;  
  2.  
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.io.PrintWriter;  
  7. import java.net.ServerSocket;  
  8. import java.net.Socket;  
  9.  
  10. public class MyServer {  
  11.     public static void main(String[] args) throws IOException {  
  12.         ServerSocket server = new ServerSocket(10000);  
  13.         Socket socket = server.accept();  
  14.         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  15.         PrintWriter out = new PrintWriter(socket.getOutputStream());  
  16.           
  17.         while (true) {  
  18.             String msg = in.readLine();  
  19.             System.out.println(msg);  
  20.             out.println("Server received " + msg);  
  21.             out.flush();  
  22.             if (msg.equals("bye")) {  
  23.                 break;  
  24.             }  
  25.         }  
  26.         socket.close();  
  27.     }  

然后是一個Client類,這個類連接上面啟動的Server類,然后接收任何用戶輸入,當(dāng)遇到回車時發(fā)送字符串到Server上,當(dāng)輸入“bye”是退出。

  1. package com.googlecode.garbagecan.test.socket.sample1;  
  2.  
  3. import java.io.BufferedReader;  
  4. import java.io.InputStreamReader;  
  5. import java.io.PrintWriter;  
  6. import java.net.Socket;  
  7.  
  8. public class MyClient {  
  9.     public static void main(String[] args) throws Exception {  
  10.         Socket socket = new Socket("localhost"10000);  
  11.         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  12.         PrintWriter out = new PrintWriter(socket.getOutputStream());  
  13.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  
  14.  
  15.         while (true) {  
  16.             String msg = reader.readLine();  
  17.             out.println(msg);  
  18.             out.flush();  
  19.             if (msg.equals("bye")) {  
  20.                 break;  
  21.             }  
  22.             System.out.println(in.readLine());  
  23.         }  
  24.         socket.close();  
  25.     }  

最后,首先運行MyServer類,然后MyClient類,然后在MyClient的控制臺輸入任意字符,可以看到當(dāng)輸入bye是server和client都會退出。

原文鏈接:http://blog.csdn.net/kongxx/article/details/7259436

【編輯推薦】

  1. Java多線程之消費者生產(chǎn)者模式
  2. 深入理解Java對象序列化
  3. 菜鳥入門Java語言學(xué)習(xí)的要點
  4. Java自定義范型的應(yīng)用技巧
  5. Java中Class對象詳解
責(zé)任編輯:林師授 來源: kongxx的博客
相關(guān)推薦

2009-07-10 09:05:20

SwingWorker

2012-02-15 10:34:29

JavaJava Socket

2021-01-28 11:17:49

Python爬蟲單線程

2020-11-09 09:33:37

多線程

2010-08-30 08:55:56

JavaScript引

2022-01-04 11:11:32

Redis單線程Reactor

2010-01-28 16:45:44

Android單線程模

2019-10-29 20:13:43

Java技術(shù)程序員

2017-03-06 14:08:38

JavaScript單線程setTimeout

2024-02-26 00:00:00

JavaScript單線程高效

2025-04-24 08:15:00

Redis單線程線程

2019-11-25 10:13:52

Redis單線程I

2024-09-27 11:51:33

Redis多線程單線程

2019-06-17 14:20:51

Redis數(shù)據(jù)庫Java

2023-08-17 14:12:17

2020-06-11 09:35:39

Redis單線程Java

2020-10-30 16:20:38

Redis單線程高并發(fā)

2023-10-15 12:23:10

單線程Redis

2021-01-10 11:21:33

JavaScript語言開發(fā)

2019-02-18 08:10:53

點贊
收藏

51CTO技術(shù)棧公眾號