socket通信3.1

服務(wù)端3.1

package talkingthread;

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;


public class ChatServer3 {
    static List<ChatThread> listClient = new ArrayList<>();

    public static class ChatThread implements Runnable{
        Socket socket;
        BufferedReader reader;
        PrintWriter writer;

        public ChatThread(Socket nsocket) throws IOException{
            socket = nsocket;
            writer  = new PrintWriter(socket.getOutputStream());
            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        }

        public void sendMessage(String msg){
            writer.println(msg);
            writer.flush();
        }
        
        public void sendAll(String msg){
            for(ChatThread client : listClient){
                client.sendMessage(msg);
            }
        }

        @Override
        public void run() {
            String msg = "";
            try {
                while ((msg = reader.readLine()) != null) {
                    sendAll(msg);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    public static void main(String[] args) throws IOException {
        @SuppressWarnings("resource")
        ServerSocket server = new ServerSocket(10000);
        while (true) {
            Socket socket = server.accept();
            ChatThread thread = new ChatThread(socket);
            listClient.add(thread);
            Thread t = new Thread(thread); 
            t.start();
        }
    }
}

服務(wù)端3

package talkingthread;

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.Iterator;
import java.util.List;


public class ChatServer3 {
    static List<String> message = new ArrayList<String>();

    public static class ChatThread implements Runnable{
        Socket socket;
        BufferedReader reader;
        PrintWriter writer;

        public ChatThread(Socket nsocket){
            socket = nsocket;
        }

        public void sendMessage() throws IOException{
//          for (String client : message){
//              writer = new PrintWriter(socket.getOutputStream());
//              writer.println(client);
//              writer.flush();
//          }
            Iterator<String> iterator = message.iterator();
            while (iterator.hasNext()) {
                writer = new PrintWriter(socket.getOutputStream());
                writer.println(iterator.next());
                writer.flush();
            }
        }

        @Override
        public void run() {
            String msg = "";
            try {
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while ((msg = reader.readLine()) != null) {
                    message.add(msg);
                    sendMessage();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    public static void main(String[] args) throws IOException {
        @SuppressWarnings("resource")
        ServerSocket server = new ServerSocket(10000);
        while (true) {
            Socket socket = server.accept();
            ChatThread thread = new ChatThread(socket);
            Thread t = new Thread(thread); 
            t.start();
        }
    }
}

客戶端

package talkingthread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ChatClient2 {
    private Thread readThread;
    private Thread writeThread;

    public ChatClient2() throws Exception, IOException{
        @SuppressWarnings("resource")
        Socket socket = new Socket("127.0.0.1", 10000);
        final BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        final PrintWriter out = new PrintWriter(socket.getOutputStream());
        final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        readThread = new Thread(new Runnable(){
            @Override
            public void run() {
                String message = "";
                while(true){
                    try {
                        message = in.readLine();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    System.out.println(message);
                }
            }
        });
        readThread.start();
        writeThread = new Thread(new Runnable(){
            public void run() {
                String msg = "";
                while(true){
                    try {
                        msg = reader.readLine();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    out.println(msg);
                    out.flush();
                }
            }
        });
        writeThread.start();
    }
    public static void main(String[] args) throws Exception, IOException {
        new ChatClient2();
    }
}

問(wèn)題1炭臭,客戶端必須發(fā)出消息,服務(wù)端才會(huì)返回信息
問(wèn)題2擂煞,服務(wù)端會(huì)返還之前所有的信息
將客戶端socket記錄下來(lái)诬辈,往每一個(gè)socket分別寫(xiě)信息酵使。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市焙糟,隨后出現(xiàn)的幾起案子口渔,更是在濱河造成了極大的恐慌,老刑警劉巖酬荞,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搓劫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡混巧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)勤揩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咧党,“玉大人,你說(shuō)我怎么就攤上這事陨亡“猓” “怎么了深员?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蛙埂。 經(jīng)常有香客問(wèn)我倦畅,道長(zhǎng),這世上最難降的妖魔是什么绣的? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任叠赐,我火速辦了婚禮,結(jié)果婚禮上屡江,老公的妹妹穿的比我還像新娘芭概。我一直安慰自己,他們只是感情好惩嘉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布罢洲。 她就那樣靜靜地躺著,像睡著了一般文黎。 火紅的嫁衣襯著肌膚如雪惹苗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天耸峭,我揣著相機(jī)與錄音桩蓉,去河邊找鬼。 笑死抓艳,一個(gè)胖子當(dāng)著我的面吹牛触机,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玷或,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼儡首,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了偏友?” 一聲冷哼從身側(cè)響起蔬胯,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎位他,沒(méi)想到半個(gè)月后氛濒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹅髓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年舞竿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窿冯。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骗奖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情执桌,我是刑警寧澤鄙皇,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站仰挣,受9級(jí)特大地震影響伴逸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膘壶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一错蝴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧香椎,春花似錦漱竖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至玛界,卻和暖如春万矾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慎框。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工良狈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笨枯。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓薪丁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親馅精。 傳聞我的和親對(duì)象是個(gè)殘疾皇子严嗜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)洲敢,斷路器漫玄,智...
    卡卡羅2017閱讀 134,639評(píng)論 18 139
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測(cè)試 ...
    KeKeMars閱讀 6,313評(píng)論 0 6
  • 前言 我們深諳信息交流的價(jià)值,那網(wǎng)絡(luò)中進(jìn)程之間如何通信压彭,如我們每天打開(kāi)瀏覽器瀏覽網(wǎng)頁(yè)時(shí)睦优,瀏覽器的進(jìn)程怎么與web服...
    Chars閱讀 2,981評(píng)論 2 117
  • 1.在子類調(diào)用抽象父類時(shí),默認(rèn)調(diào)用了父類的無(wú)參構(gòu)造方法壮不,對(duì)父類的數(shù)據(jù)進(jìn)行初始化汗盘,這就是抽象類構(gòu)造方法存在的意義 2...
    ZOKE閱讀 108評(píng)論 0 0
  • 01 在民國(guó)名人錄里衡未,若論博學(xué)尸执、風(fēng)趣家凯、有癡氣缓醋,大概非錢(qián)鐘書(shū)先生莫屬了。 錢(qián)先生自幼便鮮少生活能力绊诲,不會(huì)系蝴蝶結(jié)送粱、握...
    菀彼青青閱讀 440評(píng)論 0 9