<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    march alex's blog
    hello,I am march alex
    posts - 52,comments - 7,trackbacks - 0
    Client端:

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;

    public class ChatClient {
        
    private static final String SERVER_IP = "127.0.0.1";
        
    private static final int SERVER_PORT = 8888;
        
        Socket socket 
    = null;
        DataOutputStream dos 
    = null;
        DataInputStream dis 
    = null;
        
    private boolean bConnected = false;

        
    private static Scanner in = new Scanner(System.in);
        
    private static String hostInfo = null;

        Thread tRecv 
    = new Thread(new RecvThread());

        
    public static void main(String[] args) {
            
    new ChatClient().launch();
        }

        
    public void launch() {
            connect();
            tRecv.start();
        }

        
    public void connect() {
            
    try {
                socket 
    = new Socket(SERVER_IP, SERVER_PORT);
                dos 
    = new DataOutputStream(socket.getOutputStream());
                dis 
    = new DataInputStream(socket.getInputStream());
                bConnected 
    = true;

                InetAddress addr 
    = InetAddress.getLocalHost();
                String ip 
    = addr.getHostAddress().toString();// 獲得本機(jī)IP
                String address = addr.getHostName().toString();// 獲得本機(jī)名稱
                hostInfo = ip + "\t" + address + "\tconnected.";
                System.out.println(hostInfo);
                dos.writeUTF(hostInfo);
                dos.flush();
            } 
    catch (UnknownHostException e) {
                e.printStackTrace();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
        }

        
    public void disconnect() throws IOException {
            
    try {
                dos.close();
                dis.close();
                socket.close();
            } 
    catch (IOException e) {
            }
        }

        
    private class RecvThread implements Runnable {
            
    public void run() {
                
    while (bConnected) {
                    
    try {
                        
    if (in.hasNext()) {
                            String talk 
    = in.nextLine();
                            
    if (talk.equals("quit")) {
                                disconnect();
                                bConnected 
    = false;
                                
    break;
                            }
                            dos.writeUTF(talk);
                            dos.flush();
                        }
                        String talk 
    = dis.readUTF();
                        System.out.println(talk);
                    } 
    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    server端:
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.EOFException;
    import java.io.IOException;
    import java.net.BindException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;

    public class ChatServer {
        
    boolean started = false;
        ServerSocket ss 
    = null;
        
        List
    <Client> clients = new ArrayList<Client>();
        
        
    public static void main(String[] args) {
            
    new ChatServer().start();
        }
        
        
    public void start() {
            
    try {
                ss 
    = new ServerSocket(8888);
                started 
    = true;
            } 
    catch (BindException e) {
                System.err.println(
    "port in use.please stop program using this port and restart.");
                System.exit(
    0);
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
            
            
    try {
                
    while(started) {
                    Socket s 
    = ss.accept();
                    Client c 
    = new Client(s);
                    
    // System.out.println("a client connected.");
                    new Thread(c).start();
                    clients.add(c);
                }
            } 
    catch (IOException e) {
                e.printStackTrace();
            } 
    finally {
                
    try {
                    ss.close();
                } 
    catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
        }
        
        
    class Client implements Runnable {
            
    private Socket s;
            
    private DataInputStream dis = null;
            
    private DataOutputStream dos = null;
            
    private boolean bConnected = false;
            
            
    public Client(Socket s) {
                
    this.s = s;
                
    try {
                    dis 
    = new DataInputStream(s.getInputStream());
                    dos 
    = new DataOutputStream(s.getOutputStream());
                    bConnected 
    = true;
                } 
    catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
            
    public void send(String str) {
                
    try {
                    dos.writeUTF(str);
                    dos.flush();
                } 
    catch (IOException e) {
                    clients.remove(
    this);
                    System.out.println(
    "a client quit.");
                    
    //e.printStackTrace();
                }
            }
            
            
    public void run() {
                
    try {
                    
    while(bConnected) {
                        String str 
    = dis.readUTF();
                        solveTalk(str);
                    }    
                } 
    catch (EOFException e) {
                    System.out.println(
    "Client closed!");
                } 
    catch (IOException e) {
                    e.printStackTrace();
                } 
    finally {
                    
    try {
                        
    if(dis != null) dis.close();
                        
    if(dos != null) dos.close();
                        
    if(s != null) {
                            s.close();
                            s 
    = null;
                        }
                    } 
    catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
            
            
    private void solveTalk(String talk) {
                System.out.println(talk);
                
    for(int i=0;i<clients.size();i++) {
                    Client c 
    = clients.get(i);
                    c.send(talk);
                }
            }
        }
        
    }
    posted on 2015-08-18 10:03 marchalex 閱讀(364) 評論(0)  編輯  收藏 所屬分類: java小程序
    主站蜘蛛池模板: 亚洲一线产区二线产区精华| 青青操视频在线免费观看| 久久精品国产亚洲AV麻豆不卡 | 国产成人免费一区二区三区| 一级毛片免费观看不卡视频| 五级黄18以上免费看| 亚洲一区二区三区写真| 亚洲视频在线免费播放| 亚洲国产无套无码av电影| 亚洲成年看片在线观看| 精品免费国产一区二区| 在线视频免费观看爽爽爽| 日韩免费无码一区二区三区| 中文字幕免费在线观看动作大片 | 亚洲人成国产精品无码| 国产免费拔擦拔擦8x| 女人与禽交视频免费看| 国产精品久久永久免费| 18禁止看的免费污网站| 你是我的城池营垒免费看| jizz中国免费| 一级毛片免费视频网站| 日韩精品无码永久免费网站| 成人精品国产亚洲欧洲| 青青青亚洲精品国产| 日韩亚洲国产综合高清| 亚洲最大天堂无码精品区| 亚洲香蕉久久一区二区| 亚洲制服在线观看| 亚洲国产美女在线观看| 亚洲白色白色在线播放| 亚洲欧洲日产国码二区首页| 亚洲白色白色永久观看| 国产成人精品日本亚洲专| 亚洲av无码片区一区二区三区| 亚洲另类精品xxxx人妖| 色噜噜亚洲男人的天堂| 亚洲综合色丁香婷婷六月图片| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲av成人一区二区三区在线播放 | 精品无码专区亚洲|