java socket 線程池服務(wù)器與客戶端

服務(wù)器:

import java.io.IOException;
import java.net.ServerSocket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadServer {

    public static void main(String[] args) {
        try {
            ServerSocket server = new ServerSocket(20011);
            ExecutorService executor=Executors.newFixedThreadPool(20);
            // 構(gòu)造一個線程池
            //ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),
                 //   new ThreadPoolExecutor.DiscardOldestPolicy());
            boolean flag = true;
            while (flag) {
                System.out.println("準備接入客戶端");
                executor.execute(new Handler(server.accept())); 
                System.out.println("客戶端已經(jīng)連接");
            }
            server.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    
    
}
    


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Arrays;


public class Handler extends Thread {

    private Socket client = null;
    private BufferedReader input = null;
    private OutputStream out = null;
    //獲取Socket的輸入流胧瓜,用來接收從服務(wù)端發(fā)送過來的數(shù)據(jù) 
    InputStream buf =  null;  
    
    public Handler(Socket client ) {
        this.client = client;
        try {
            input = new BufferedReader(new InputStreamReader(client.getInputStream()));
            out = client.getOutputStream();
            buf = client.getInputStream();
            start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    @Override
    public void run() {
        try {
            try {
                byte[] b = new byte[1024];
                int rc=0;
                int c = 0;
                rc = buf.read(b, c, 1024);
                byte[] byte8583 = Arrays.copyOfRange(b, 0, rc);
                System.out.println("post:"+byteToHexString(byte8583));
                byte[] result = send8583(byte8583, "139.129.223.93", 8500);
                System.out.println("return:"+byteToHexString(result));
                out.write(result,0,result.length);
                out.flush();
            }catch (IOException e)  {
                String error = "IOException";
                System.out.println(error);
            }catch (IllegalArgumentException e) {
            } finally{
                out.close();
                input.close();
                client.close();
            }
        } catch (IOException e) {
            System.out.println("發(fā)生了IOException");
        }
    }
    
}

客戶端:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.SocketTimeoutException;

public class Client {

    public static void main(String[] args) throws IOException {
        Socket client = new Socket("127.0.0.1", 20011);  
        //客戶端請求與本機在20011端口建立TCP連接 
        client.setSoTimeout(10000);             
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 
        //獲取鍵盤輸入        
        PrintStream out = new PrintStream(client.getOutputStream());          
        //獲取Socket的輸出流卵蛉,用來發(fā)送數(shù)據(jù)到服務(wù)端                  
        BufferedReader buf =  new BufferedReader(new InputStreamReader(client.getInputStream()));  
        //獲取Socket的輸入流,用來接收從服務(wù)端發(fā)送過來的數(shù)據(jù) 
        boolean flag = true;  
        while(flag){  
            System.out.print("輸入信息:");  
            String str = input.readLine();  
            out.println(str);  
            //發(fā)送數(shù)據(jù)到服務(wù)端   
            if("end".equals(str)){  
                flag = false;  
            }else{  
                try{  
                    String echo = buf.readLine();  
                    System.out.println(echo);  
                }catch(SocketTimeoutException e){  
                    System.out.println("Time out, No response");  
                }  
            }  
        }  
        input.close();  
        if(client != null){  
            //如果構(gòu)造函數(shù)建立起了連接菊匿,則關(guān)閉套接字端辱,如果沒有建立起連接膀哲,自然不用關(guān)閉  
            System.out.println("客戶端關(guān)閉");
            client.close(); //只關(guān)閉socket昧廷,其關(guān)聯(lián)的輸入輸出流也會被關(guān)閉  
        } 
    }
    
    
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糊渊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慧脱,老刑警劉巖渺绒,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菱鸥,居然都是意外死亡宗兼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門氮采,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殷绍,“玉大人,你說我怎么就攤上這事鹊漠≈鞯剑” “怎么了茶行?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長登钥。 經(jīng)常有香客問我畔师,道長,這世上最難降的妖魔是什么牧牢? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任看锉,我火速辦了婚禮,結(jié)果婚禮上塔鳍,老公的妹妹穿的比我還像新娘伯铣。我一直安慰自己,他們只是感情好轮纫,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布腔寡。 她就那樣靜靜地躺著,像睡著了一般掌唾。 火紅的嫁衣襯著肌膚如雪蹬蚁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天郑兴,我揣著相機與錄音犀斋,去河邊找鬼。 笑死情连,一個胖子當著我的面吹牛叽粹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播却舀,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼虫几,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挽拔?” 一聲冷哼從身側(cè)響起辆脸,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螃诅,沒想到半個月后啡氢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡术裸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年倘是,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袭艺。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡搀崭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猾编,到底是詐尸還是另有隱情瘤睹,我是刑警寧澤升敲,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站轰传,受9級特大地震影響冻晤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绸吸,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望设江。 院中可真熱鬧锦茁,春花似錦、人聲如沸叉存。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歼捏。三九已至稿存,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞳秽,已是汗流浹背瓣履。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留练俐,地道東北人袖迎。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像腺晾,于是被迫代替她去往敵國和親燕锥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容