锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩精品射精日,国产精品日本亚洲777,91亚洲国产成人久久精品http://www.tkk7.com/tiandizhijian/category/48432.html涓嶈鍥犱負(fù)椋庨洦椋樿惤灝卞仠姝簡浣犵殑鑴氭錛岀湡姝g殑寰楀け灝卞湪浣犵殑蹇冧腑銆?/description>zh-cnTue, 10 Dec 2013 19:56:15 GMTTue, 10 Dec 2013 19:56:15 GMT60ChatServerhttp://www.tkk7.com/tiandizhijian/articles/407375.html縐嬪ぉ鐨勫北璋?/dc:creator>縐嬪ぉ鐨勫北璋?/author>Mon, 09 Dec 2013 14:04:00 GMThttp://www.tkk7.com/tiandizhijian/articles/407375.htmlhttp://www.tkk7.com/tiandizhijian/comments/407375.htmlhttp://www.tkk7.com/tiandizhijian/articles/407375.html#Feedback0http://www.tkk7.com/tiandizhijian/comments/commentRss/407375.htmlhttp://www.tkk7.com/tiandizhijian/services/trackbacks/407375.htmlpackage com.tianhe.frm.chat;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;

/**
 *
 *<br>
 * 鏈嶅姟鍣ㄧ殑瀹炵幇鏁堟灉錛?<br>
 *<br>
 * 1.杈撳叆-help寰楀埌鎵鏈夋湁鍏蟲湇鍔″櫒鎿嶄綔鐨勫懡浠?<br>
 *<br>
 * 2.杈撳叆-run榪涘叆鏈嶅姟鍣ㄥ悇欏瑰唴瀹瑰垵濮嬪寲 <br>
 *<br>
 * 3.杈撳叆-stop鏂紑鏈嶅姟鍣?<br>
 *<br>
 * 4.杈撳叆-quit鏂紑鏈嶅姟鍣紝騫墮鍑烘搷浣?<br>
 *<br>
 * 5.鏈嶅姟鍣ㄥ垱寤烘垚鍔熷悗錛屼細(xì)閫氳繃鍗曠嫭鐨勭嚎紼嬭繍琛岀洃鍚鎴風(fēng)淇℃伅(listenLink) <br>
 *<br>
 * 6.鏈嶅姟鍣ㄦ帴鏀跺埌鏁版嵁鍚庯紝浼?xì)灏嗘暟鎹U諱氦鑷蟲暟鎹垎鏋愬櫒(analyseMes)澶勭悊 <br>
 *<br>
 * 7.褰撶敤鎴風(fēng)‘瀹氳繛鎺ュ茍紜畾鏄電О鍚庯紝鏈嶅姟鍣ㄥ皢璇ョ敤鎴風(fēng)殑鍦板潃鍙?qiáng)濮撳悕瀛樺偍鍦╥nfoMemory涓?<br>
 *<br>
 *<br>
 *<br>
 *<br>
 * 鏈嶅姟鍣ㄧ殑綾諱笌鏂規(guī)硶錛?<br>
 *<br>
 * 1.嫻嬭瘯鏈嶅姟鍣ㄥ垱寤猴細(xì)testServer(String ip,int port) <br>
 *<br>
 * 2.鍒濆鍖栨湇鍔″櫒 錛歩nitServer(String ip,int port) <br>
 *<br>
 * 3.紜畾IP涓嶱ort 錛歠ixServerLink(String ip,int port) <br>
 *<br>
 * 4.淇℃伅鐩戝惉鍣?錛歭istenLink() <br>
 *<br>
 * 5.鏁版嵁鍒嗘瀽鍣?錛歛nalyseMes(String mes) <br>
 *<br>
 * 6.鑾峰彇鍦板潃鐢ㄦ埛鍚嶏細(xì)getConsumerName(SocketAddress sa) <br>
 *<br>
 * 7.鏁版嵁杞彂鍣?錛歵ransforMes(String mes) <br>
 *<br>
 * 8.鏁版嵁鍗曢」杞彂鍣細(xì)transforMesSingle(SocketAddress adr,String mes) <br>
 *<br>
 * 9.鍋滄鏈嶅姟鍣?錛歝utServer() <br>
 *<br>
 * 10.鑾峰緱甯姪鍒楄〃 錛歨elpList() <br>
 *<br>
 * 11.閿欒鎻愮ず鏂規(guī)硶 錛歟rrorTip(String str) <br>
 *<br>
 * 12.鍦ㄤ富鍑芥暟涓繘琛岀浉搴旀搷浣?<br>
 *<br>
 *<br>
 * 閲嶇偣娉ㄦ剰鐨勫湴鏂癸細(xì) <br>
 *<br>
 * 涓庡鎴風(fēng)鐩鎬豢錛屼負(fù)浜嗛『鍒╃洃鍚俊鎭紝闇瑕佸彟涓涓嚎紼嬭繍琛屼俊鎭洃鍚櫒
 *
 */
public class ChatServer implements Runnable
{
    private DatagramSocket server = null;
   
    private DatagramPacket getDatas = null;
   
    private InetAddress serverAddress = null;
   
    private int port = 0;
   
    // 寮濮嬭繍琛岀洃鍚殑鍙橀噺
    private boolean beStart = false;
   
    // 鐢ㄦ潵嫻嬭瘯鏈嶅姟鍣ㄧ殑鍙橀噺
    private boolean test = true;
   
    // 淇℃伅瀛樺偍鍣?br />    private Hashtable<String, SocketAddress> infoMemory = new Hashtable<String, SocketAddress>();
   
    /**
     * 嫻嬭瘯鏈嶅姟鍣ㄨ繛鎺?br />     *
     * @param ip
     * @param port
     * @return
     */
    public boolean testServer(String ip, int port)
    {
        this.initServer(ip, port);
        return test;
    }
   
    /**
     * 鏈嶅姟鍣ㄥ垵濮嬪寲
     *
     * @param ip
     * @param port
     */
    public void initServer(String ip, int port)
    {
        // 紜畾IP涓巔ort杈撳叆姝g‘
        this.fixServerLink(ip, port);
        try
        {
            server = new DatagramSocket(this.port, serverAddress);
            System.out.println("!-The Server Initialization Success錛?);
            // 鍙互寮濮嬭繍琛屽彉閲?br />            beStart = true;
        }
        catch (SocketException s)
        {
            // 濡傛灉鍑虹幇寮傚父錛屽垯鏈嶅姟鍣ㄦ祴璇曚笉閫氳繃
            test = false;
            errorTip("!-The Server Initialization Fail!");
        }
        finally
        {
           
        }
    }
   
    /**
     * 紜畾鏈嶅姟鍣↖P鍜岀鍙d俊鎭?br />     *
     * @param ip
     * @param port
     */
    private void fixServerLink(String ip, int port)
    {
        // 鍒ゆ柇榪炴帴鏈嶅姟鍣ㄧ殑绔彛鍙?br />        // 濡傛灉杈撳叆鍛戒護(hù)涓?錛屽垯涓洪粯璁ょ鍙e彿9999
        // 鍚﹀垯绔彛鍙蜂負(fù)鏂扮鍙e彿
        if (port == 0)
            this.port = 9999;
        else
            this.port = port;
        // 鍒ゆ柇榪炴帴鏈嶅姟鍣ㄧ殑IP鍦板潃
        // 濡傛灉杈撳叆鍛戒護(hù)涓?錛屽垯涓洪粯璁ょ殑鏈湴IP鍦板潃
        // 鍚﹀垯涓鴻緭鍏ョ殑IP鍦板潃
        try
        {
            if (ip.equalsIgnoreCase("0"))
                this.serverAddress = InetAddress.getLocalHost();
            else
                this.serverAddress = InetAddress.getByName(ip);
        }
        catch (UnknownHostException u)
        {
            errorTip("!-Sorry, IP address you put is not currect!");
        }
    }
   
    /**
     * 鐩戝惉淇℃伅
     *
     */
    public void listenLink()
    {
        byte[] buf = new byte[1024];
        String mes = null;
        try
        {
            getDatas = new DatagramPacket(buf, buf.length);
            System.out.println("!-The Server starts listenning to message.");
            while (beStart)
            {
                server.receive(getDatas);
                mes = new String(buf, 0, getDatas.getLength());
                // 灝嗚幏鍙栫殑鏁版嵁浼犻掕嚦鏁版嵁鍒嗘瀽鍣?br />                this.analyseMes(mes);
            }
        }
        catch (IOException e)
        {
            errorTip("!-The Server Can not receive message");
        }
    }
   
    /**
     * 鏁版嵁鍒嗘瀽鍣紝緇欎簣鐩稿簲澶勭悊
     *
     * @param mes
     */
    private void analyseMes(String mes)
    {
        // 鑾峰彇褰撳墠瀹㈡埛绔殑鍦板潃錛?br />        SocketAddress adr = getDatas.getSocketAddress();
       
        // -test:榪涜鏈嶅姟鍣ㄤ笌瀹㈡埛绔殑榪炴帴嫻嬭瘯
        // 鑻ユ垚鍔燂紝鍒欏皢璇ュ鎴風(fēng)鍙戦佹垚鍔熸秷鎭?br />        if (mes.trim().equalsIgnoreCase("-test"))
        {
            transforMesSingle(adr, "-test: !-From Server:Succeed in Testing.");
        }
       
        // -quit錛氭帴鍙楀鎴風(fēng)閫鍑轟俊鎭?br />        // 灝嗚鐢ㄦ埛鐨勯鍑轟俊鎭漿鍙戣嚦鎵鏈夊湪綰挎垚鍛?br />        else if (mes.trim().equalsIgnoreCase("-quit"))
        {
            String name = this.getConsumerName(adr);
            System.out.println(name + "http://" + adr + " quit! ");
            transforMes("* " + name + "閫鍑鴻亰澶╁");
            infoMemory.remove(name);
        }
       
        // -getList:鎺ュ彈瀹㈡埛绔幏鍙栧垪琛ㄧ殑璇鋒眰
        // 灝嗘墍鏈夌敤鎴瘋繛鎺ヤ負(fù)瀛楃涓茬殑褰㈠紡錛屽錛?-getList,鐢ㄦ埛1,鐢ㄦ埛2...鐢ㄦ埛n"
        else if (mes.trim().equals("-getList"))
        {
            StringBuffer list = new StringBuffer();
            list.append("-getList,");
            Enumeration<String> names = infoMemory.keys();
            while (names.hasMoreElements())
            {
                list.append(names.nextElement() + ",");
            }
            transforMesSingle(getDatas.getSocketAddress(), list.toString());
        }
       
        // -to錛氭帴鍙楀鎴風(fēng)璇鋒眰錛屽皢淇℃伅杞彂緇欑浉搴斿鎴?br />        // 濡傛灉鐩爣瀹㈡埛涓嶅瓨鍦紝鍒欏悜璇鋒眰瀹㈡埛鍙戦佺浉搴旀秷鎭?br />        else if (mes.indexOf("-to ") != -1 && mes.startsWith("-to "))
        {
            String main = mes.substring("-to ".length(), mes.length());
            String toName = main.substring(0, main.indexOf(" "));
            String name = this.getConsumerName(adr);
            String con = name + " say to you :" + main.substring(toName.length() + 1, main.length());
            if (!infoMemory.containsKey(toName))
                transforMesSingle(adr, "!-The message can not be recevie by whom you send for,please check out.");
            else
                transforMesSingle(infoMemory.get(toName), con);
        }
       
        // -nick:鎺ュ彈瀹㈡埛绔櫥褰曡姹?br />        // 濡傛灉杈撳叆鐨勫尶鍚嶄笉瀛樺湪錛屽垯鐧昏璇ョ敤鎴蜂笌infoMemory
        // 濡傛灉瀛樺湪鍒欒繑鍥炵浉搴旀彁紺?br />        else if (mes.indexOf("-nick ") != -1 && mes.startsWith("-nick "))
        {
            String nickName = mes.substring("-nick ".length(), mes.length());
            if (infoMemory.containsKey(nickName))
                transforMesSingle(adr, "-nick: !-The nickname you post is already exist,please try others.");
            else
            {
                infoMemory.put(nickName, adr);
                transforMes("Welcome " + nickName + " to Sunspot Chat!");
                System.out.println(nickName + "http://" + adr.toString() + " succeed in lanuching.");
            }
        }
       
        // 涓鑸秷鎭皢浼?xì)铦{鍙戣嚦鎵鏈夌敤鎴?br />        else
        {
            String name = this.getConsumerName(adr);
            transforMes(name + ": " + mes);
        }
    }
   
    /**
     * 閫氳繃鍦板潃寰楀埌鐢ㄦ埛鐨勬樀縐?鐢變簬Hashtable鏃犳硶閫氳繃Value鑾峰彇Key錛屾墍鏈変笓闂ㄥ啓璇ユ柟娉?br />     *
     * @param sa
     * @return
     */
    private String getConsumerName(SocketAddress sa)
    {
        Enumeration<String> names = infoMemory.keys();
        String name = null;
        while (names.hasMoreElements())
        {
            String temp = names.nextElement();
            SocketAddress adrs = infoMemory.get(temp);
            // 榪涜姣旇緝
            if (sa.equals(adrs))
            {
                name = temp;
                break;
            }
        }
        return name;
    }
   
    /**
     * 鍚戞墍鏈夌殑鐢ㄦ埛鍙戦佹暟鎹?br />     *
     * @param mes
     */
    public void transforMes(String mes)
    {
        byte[] buf = mes.getBytes();
        DatagramPacket sendDatas = null;
        Enumeration<SocketAddress> all = infoMemory.elements();
        try
        {
            while (all.hasMoreElements())
            {
                sendDatas = new DatagramPacket(buf, buf.length, all.nextElement());
                server.send(sendDatas);
            }
        }
        catch (SocketException s)
        {
            errorTip("!-The feedback address is error!");
        }
        catch (IOException i)
        {
            errorTip("!-Can not send message!");
        }
    }
   
    /**
     * 鍚戝崟涓敤鎴峰彂閫佹暟鎹?br />     *
     * @param adr
     * @param mes
     */
    public void transforMesSingle(SocketAddress adr, String mes)
    {
        byte[] buf = mes.getBytes();
        try
        {
            DatagramPacket sendDatas = new DatagramPacket(buf, buf.length, adr);
            server.send(sendDatas);
        }
        catch (SocketException s)
        {
            errorTip("!-The feedback address is error!");
        }
        catch (IOException i)
        {
            errorTip("!-Can not send message!");
        }
    }
   
    /**
     * 鏂紑榪炴帴
     *
     */
    public void cutServer()
    {
        beStart = false;
        if (server != null)
            server.close();
        System.out.println("!-The server is done.");
    }
   
    public void helpList()
    {
        System.out.println("-help" + "    鑾峰彇鏈嶅姟鍣ㄧ浉搴旀搷浣滅殑甯姪" + "\n" + "-run " + "    榪愯鏈嶅姟鍣紝騫跺悓鏃跺緩绔嬩俊鎭洃鍚? + "\n" + "-stop"
                + "    鍋滄鏈嶅姟鍣? + "\n" + "-quit" + "    鍋滄鏈嶅姟鍣紝騫墮鍑哄懡浠? + "\n");
    }
   
    /**
     * 綰跨▼
     */
    public void run()
    {
        listenLink();
    }
   
    /**
     * 涓昏鎿嶄綔
     *
     * @param args
     */
    public static void main(String[] args)
    {
        ChatServer ser = new ChatServer();
        String getIp = null;
        int getPort = 0;
       
        // 寤虹珛杈撳叆
        Scanner input = new Scanner(System.in);
        System.out.println("!-Please input server command:");
       
        // 寮濮嬭緭鍏?br />        String command = null;
        // 濡傛灉杈撳叆quit灝嗘柇寮榪炴帴錛屽茍閫鍑烘搷浣?br />        while (!(command = input.next()).equalsIgnoreCase("-quit"))
        {
            // 鑾峰彇甯姪
            if (command.equalsIgnoreCase("-help"))
            {
                ser.helpList();
            }
           
            // 鍒濆鍖栨湇鍔″櫒
            if (command.equalsIgnoreCase("-run"))
            {
                boolean goon = true;
                while (goon)
                {
                    System.out.println("1.杈撳叆鏈嶅姟鍣ㄧ殑IP鍦板潃錛岄粯璁よ緭鍏ユ暟瀛?錛?);
                    getIp = input.next();
                    System.out.println("2.杈撳叆鏈嶅姟鍣ㄧ殑绔彛鍙鳳紝榛樿杈撳叆鏁板瓧0錛?);
                    try
                    {
                        getPort = input.nextInt();
                    }
                    catch (Exception e)
                    {
                        System.out.println("!-The port style is not currect!");
                    }
                    // 嫻嬭瘯鏈嶅姟鍣ㄥ垱寤猴紝濡傛灉鎴愬姛鍒欏悓鏃朵負(fù)淇℃伅鐩戝惉鍣ㄥ緩绔嬬嚎紼?br />                    System.out.println("!-鍒涘緩鏈嶅姟鍣ㄥ茍榪愯...");
                    if (ser.testServer(getIp, getPort))
                    {
                        new Thread(ser).start();
                        goon = false;
                    }
                    else
                        System.out.println("!-鏈嶅姟鍣ㄥ垱寤哄け璐ワ紝璇鋒鏌ワ紒");
                }
            }
           
            // 鍏抽棴鏈嶅姟鍣?br />            if (command.equalsIgnoreCase("-stop"))
            {
                ser.cutServer();
            }
        }
        input.close();
        ser.cutServer();
    }
   
    /**
     * 閿欒鎻愮ず
     *
     * @param str
     */
    public static void errorTip(String str)
    {
        System.out.println("-----------------\n" + str + "\n-----------------");
    }
}



]]>
ChatClienthttp://www.tkk7.com/tiandizhijian/articles/407376.html縐嬪ぉ鐨勫北璋?/dc:creator>縐嬪ぉ鐨勫北璋?/author>Mon, 09 Dec 2013 14:04:00 GMThttp://www.tkk7.com/tiandizhijian/articles/407376.htmlhttp://www.tkk7.com/tiandizhijian/comments/407376.htmlhttp://www.tkk7.com/tiandizhijian/articles/407376.html#Feedback0http://www.tkk7.com/tiandizhijian/comments/commentRss/407376.htmlhttp://www.tkk7.com/tiandizhijian/services/trackbacks/407376.htmlpackage com.tianhe.frm.chat;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;

/**
 *
 *<br>
 * 瀹㈡埛绔殑瀹炵幇鏁堟灉 <br>
 *<br>
 * 1.鐧誨綍鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄧ鍙e彿鍜孖P鍙瘋緭鍏ョ殑瀛楃閮芥槸"0"鍒欙紝瀹㈡埛绔繛鎺ュ埌榛樿鐨勬湇鍔″櫒 <br>
 *<br>
 * 2.杈撳叆鑱婂ぉ鏄電О <br>
 *<br>
 * 3.杈撳叆"-quit"浼?xì)鑷姩閫鍑鴻亰澶?<br>
 *<br>
 * 4.杈撳叆"-getList"浼?xì)寰楀埌鍦ňU跨敤鎴風(fēng)殑鍚嶇О <br>
 *<br>
 * 5.杈撳叆"-to <鐢ㄦ埛鍚嶇О> <鑱婂ぉ淇℃伅>"浼?xì)鎶婁俊鎭彂閫佸埌鎸囧畾鐨勭敤鎴峰錛屼粬浜虹湅涓嶅埌 <br>
 *<br>
 * 6.杈撳叆"-help"浼?xì)寰楀埌瀹㈡堬L(fēng)鐩稿簲鎿嶄綔甯姪 <br>
 *<br>
 * 6.鐩存帴杈撳叆鍐呭鍒欎細(xì)灝嗗唴瀹瑰彂閫佸埌鎵鏈夊湪綰跨殑鐢ㄦ埛澶?<br>
 *<br>
 *<br>
 *<br>
 *<br>
 * 瀹㈡埛绔殑綾諱笌鏂規(guī)硶 <br>
 *<br>
 * 1.寤虹珛榪炴帴鏂規(guī)硶錛歝onnectServer(String ip,int port) <br>
 *<br>
 * 2.鏂紑榪炴帴鏂規(guī)硶錛歞isconnectServer() <br>
 *<br>
 * 2.鍙戦佹秷鎭柟娉曪細(xì)sendMes(String mes) <br>
 *<br>
 * 3.鎺ュ彈娑堟伅鏂規(guī)硶錛歡etMes() <br>
 *<br>
 * 4.鎺ュ彈涓嬈℃秷鎭細(xì)getMesOnce() <br>
 *<br>
 * 5.鑾峰緱鐢ㄦ埛鍒楄〃錛歡etList(String mes) <br>
 *<br>
 * 6.嫻嬭瘯榪炴帴鏂規(guī)硶錛歵estConnect(String ip,int port) <br>
 *<br>
 * 7.媯(gè)鏌ョ敤鎴峰悕 錛歝heckNickName(String nickName) <br>
 *<br>
 * 8.鑾峰緱甯姪鍒楄〃錛歨elpList()錛?<br>
 *<br>
 * 9.鍚勯」鍐呭鐨勮緭鍏ュ湪main鏂規(guī)硶涓繘琛?<br>
 *<br>
 *<br>
 *<br>
 *<br>
 * 閲嶇偣娉ㄦ剰鐨勫湴鏂?<br>
 *<br>
 * 鐢變簬瀹㈡埛绔棤娉曠煡閬撴湇鍔″櫒浣曟椂杞彂鏁版嵁錛屾墍浠ュ鎴風(fēng)闇瑕佷竴鐩翠笉鍋滃湴鐩戝惉娑堟伅錛屼負(fù)浜嗕笉褰卞搷鍏朵粬鐨勬柟娉曪紝濡傚彂閫佹暟鎹紝榪欓噷鐢ㄥ埌澶氱嚎紼嬶紝鍗充負(fù)鎺ュ彈鏁版嵁鍗曠嫭寤虹珛涓涓嚎紼嬶紝浠ラ槻姝㈠獎(jiǎng)鍝嶅叾浠栨柟娉曠殑姝e父宸ヤ綔銆?br /> *
 */
public class ChatClient implements Runnable
{
    // 鍙戦佹暟鎹殑鏈嶅姟鍣∟et鍦板潃錛屽湪fixServerLink
    // 鍜宻endMes鏂規(guī)硶涓細(xì)鐢ㄥ埌
    private InetAddress sendAddress = null;
   
    private int port = 0;
   
    // 瀹㈡埛绔?br />    private DatagramSocket client = null;
   
    // 鍙戦佺殑鏁版嵁鎶?br />    private DatagramPacket sendDatas = null;
   
    // 鐢ㄦ潵嫻嬭瘯鏄惁鑳藉榪炴帴鎴愬姛鎴栬呯敤鎴峰悕鏄惁姝g‘
    // 鍦╰estConnect鍜宑heckNickName涓細(xì)鐢ㄥ埌.
    // 騫剁┛鎻掑湪sendMes鏂規(guī)硶涓?br />    private boolean test = true;
   
    /**
     * 寤虹珛榪炴帴
     *
     * @param ip 鏈嶅姟鍣↖P鍙?br />     * @param port 鏈嶅姟鍣≒ort
     */
    public void connectServer(String ip, int port)
    {
        // 鍏堢‘瀹氳緭鍏ョ殑IP涓庣鍙e彿鏄惁絎﹀悎瑙勫垯
        this.fixServerLink(ip, port);
       
        try
        {
            client = new DatagramSocket();
        }
        catch (SocketException s)
        {
            System.out.println("The Connection of server is error.");
        }
    }
   
    /**
     * 紜畾IP涓嶱ort杈撳叆鏄惁姝g‘
     *
     * @param ip
     * @param port
     */
    private void fixServerLink(String ip, int port)
    {
        // 鍒ゆ柇榪炴帴鏈嶅姟鍣ㄧ殑绔彛鍙?br />        // 濡傛灉杈撳叆鍛戒護(hù)涓?錛屽垯涓洪粯璁ょ鍙e彿9999
        // 鍚﹀垯绔彛鍙蜂負(fù)鏂扮鍙e彿
        if (port == 0)
            this.port = 9999;
        else
            this.port = port;
        // 鍒ゆ柇榪炴帴鏈嶅姟鍣ㄧ殑IP鍦板潃
        // 濡傛灉杈撳叆鍛戒護(hù)涓?錛屽垯涓洪粯璁ょ殑鏈湴IP鍦板潃
        // 鍚﹀垯涓鴻緭鍏ョ殑IP鍦板潃
        try
        {
            if (ip.equalsIgnoreCase("0"))
                this.sendAddress = InetAddress.getLocalHost();
            else
                this.sendAddress = InetAddress.getByName(ip);
        }
        catch (UnknownHostException u)
        {
            System.out.println("Sorry, IP address you put is not currect!");
        }
    }
   
    /**
     * 鏂紑榪炴帴
     */
    public void disconnectServer()
    {
        // 褰撳鎴風(fēng)鏂紑榪炴帴涔嬪墠錛屽鎴風(fēng)浼?xì)鍚戞湇鍔″櫒绔彂閫佷竴涓俊鎭紝
        // 浠ヤ究鍛婅瘔鏈嶅姟鍣ㄨ瀹㈡埛涓嬬嚎
        this.sendMes("-quit");
        if (client != null)
            client.close();
       
    }
   
    /**
     * 鍙戦佹秷鎭?br />     *
     * @param mes
     */
    public void sendMes(String mes)
    {
        byte[] buf = mes.getBytes();
        sendDatas = new DatagramPacket(buf, buf.length, sendAddress, port);
        // 褰撳緩绔嬪彂閫佹椂錛屾祴璇曟甯?br />        test = true;
        try
        {
            client.send(sendDatas);
        }
        catch (NullPointerException n)
        {
            // 濡傛灉鏃犳硶寰楀埌瑕佸彂閫佺殑娑堟伅錛屾祴璇曠粓姝?br />            test = false;
            System.out.println("The nullity of the address of connection");
        }
        catch (IOException s)
        {
            // 濡傛灉鏃犳硶鍙戦佹秷鎭嚦鏈嶅姟鍣紝嫻嬭瘯緇堟
            test = false;
            System.out.println("There is a problem to send message.");
        }
        finally
        {
        }
    }
   
    /**
     * 寰楀埌鏁版嵁
     */
    public void getMes()
    {
        byte[] buf = new byte[1024];
        DatagramPacket getDatas = new DatagramPacket(buf, buf.length);
        String mes = null;
        try
        {
            while (true)
            {
                client.receive(getDatas);
                mes = new String(buf, 0, getDatas.getLength());
                // 濡傛灉鏈嶅姟鍣ㄥ彂閫佺殑娑堟伅涓殑澶寸墖孌墊湁-getList
                // 琛ㄦ槑瀹㈡埛绔幏寰楀湪綰跨敤鎴峰垪琛紝璋冪敤getList鏂規(guī)硶瑙f瀽
                if (mes.indexOf("-getList") == 0)
                    this.getList(mes);
                else
                    System.out.println(mes);
            }
        }
        catch (IOException i)
        {
            System.out.println("Fail in receving message");
        }
    }
   
    /**
     * 寰楀埌涓嬈℃暟鎹?br />     *
     */
    public String getMesOnce()
    {
        byte[] buf = new byte[1024];
        DatagramPacket getDatas = new DatagramPacket(buf, buf.length);
        String mes = null;
        try
        {
            client.receive(getDatas);
            mes = new String(buf, 0, getDatas.getLength());
        }
        catch (Exception e)
        {
            System.out.println("!-Can not receive the message!");
        }
        finally
        {
        }
        return mes;
    }
   
    /**
     * 鏄劇ず鍦ㄧ嚎鐢ㄦ埛鍒楄〃
     *
     * @param mes
     */
    private void getList(String mes)
    {
        String[] list = mes.split(",");
        System.out.println("鍦ㄧ嚎鐢ㄦ埛錛歕n-------------");
        for (int i = 1; i < list.length; i++)
        {
            System.out.println("    * " + list[i]);
        }
        System.out.println("-------------");
    }
   
    /**
     * 嫻嬭瘯榪炴帴
     *
     * @param ip
     * @param port
     * @return
     */
    public boolean testConnect(String ip, int port)
    {
        // 鍒涘緩榪炴帴錛屾祴璇曡繛鎺ユ槸鍚︽紜?br />        this.connectServer(ip, port);
        // 濡傛灉榪炴帴姝g‘錛岃瘯鍥懼彂閫佹祴璇曟爣璇?-test"
        // 鍦ㄥ彂閫佹暟鎹繃紼嬩腑嫻嬭瘯榪炴帴鏄惁姝g‘
        this.sendMes("-test");
        // 濡傛灉榪炴帴鍙戦佹祴璇曢氳繃
        // 鍒欏紑濮嬫祴璇曟槸鍚﹁兘澶熸紜?br />        if (test)
        {
            String mes = this.getMesOnce();
            // 濡傛灉鏈嶅姟鍣ㄨ繑鍥炵浉搴旂殑鏍囪瘑錛屾祴璇曢氳繃
            if (mes.startsWith("-test"))
            {
                test = true;
            }
        }
       
        if (client != null)
        {
            client.close();
        }
        return test;
    }
   
    /**
     * 鍒ゆ柇鐢ㄦ埛鍚嶈緭鍏ユ槸鍚︽紜?br />     */
    private boolean checkNickName(String nickName)
    {
        test = true;
        String mes = null;
        // 鍒ゆ柇鏄電О鏄惁絎﹀悎綰﹀畾
        for (int i = 0; i < nickName.length(); i++)
        {
            char temp = nickName.charAt(i);
            // 濡傛灉涓嶇鍚堬紝鍒欑粓姝㈡祴璇?br />            if (!Character.isLetterOrDigit(temp))
            {
                test = false;
                break;
            }
        }
        // 濡傛灉閫氳繃綰﹀畾錛屽垯璇曞浘鍚戞湇鍔″櫒鍙戦佹樀縐幫紝榪涜鍒ゆ柇
        if (test)
        {
            this.sendMes("-nick " + nickName);
            mes = this.getMesOnce();
            // 濡傛灉鏈嶅姟鍣ㄨ繑鍥?-nick"鏍囪瘑
            // 璇存槑嫻嬭瘯鏄電О澶辮觸錛岀粓姝㈡祴璇?br />            if (mes.startsWith("-nick"))
            {
                test = false;
            }
        }
       
        System.out.println(mes);
        return test;
    }
   
    /**
     * 寰楀埌甯姪鍒楄〃
     *
     */
    public void helpList()
    {
        System.out.println("閲嶈璇存槑錛氬鏋滃凡緇忔垚鍔熻繛鎺ワ紝鍙杈撳叆鍐呭錛屾墍鏈夊湪綰跨敤鎴烽兘鑳界湅鍒版?zhèn)ㄧ殑鍙懎a銆? + "\n" + "-help" + "         鑾峰彇瀹㈡埛绔浉搴旀搷浣滅殑甯姪" + "\n"
                + "-test" + "         嫻嬭瘯涓庢湇鍔″櫒鐨勮繛鎺ワ紝濡傛灉宸茬粡鏈嶅姟鍣ㄨ繛鎺ワ紝璇蜂笉瑕侀夌敤姝ら」" + "\n" + "-getList" + "    寰楀埌鍦ㄧ嚎鐢ㄦ埛鐨勫垪琛? + "\n"
                + "-to <name> <message>" + "\n" + "                    灝嗘秷鎭彂閫佸埌鐗瑰畾鐨勫湪綰跨敤鎴峰" + "\n" + "-quit"
                + "         鏂紑榪炴帴錛岄鍑鴻亰澶╁" + "\n");
    }
   
    /**
     * 綰跨▼閮ㄥ垎
     */
    public void run()
    {
        getMes();
    }
   
    /**
     * 鍚勯」鍐呭鐨勬搷浣滃櫒
     */
    public static void main(String[] args)
    {
        ChatClient consumer = new ChatClient();
        String getIp = null;
        int getPort = 0;
        System.out.println("嬈㈣繋鐧誨綍Sunspot鑱婂ぉ瀹わ紒");
        Scanner input = new Scanner(System.in);
       
        // 杈撳叆IP涓嶱ort
        boolean goahead = true;
        while (goahead)
        {
            System.out.println("1.璇瘋緭鍏ユ湇鍔″櫒IP鍦板潃錛岄粯璁よ杈撳叆鏁板瓧0 錛?);
            // 絎竴姝ワ細(xì)杈撳叆鏈嶅姟鍣ㄧ殑IP鍦板潃
            getIp = input.next();
            // 絎簩姝ワ細(xì)杈撳叆鏈嶅姟鍣ㄧ殑绔彛鍙?br />            System.out.println("2.璇瘋緭鍏ユ湇鍔″櫒绔彛鍙鳳紝榛樿璇瘋緭鍏ユ暟瀛? 錛?);
            try
            {
                getPort = input.nextInt();
            }
            catch (InputMismatchException i)
            {
                errorTip("!-The port style is not currect!");
            }
            catch (NoSuchElementException n)
            {
                errorTip("!-The port style is not currect!");
            }
           
            // 嫻嬭瘯鏈嶅姟鍣?br />            System.out.println("!-姝e湪嫻嬭瘯榪炴帴鏈嶅姟鍣紝璇風(fēng)◢鍊?..");
            if (consumer.testConnect(getIp, getPort))
            {
                System.out.println("!-榪炴帴鎴愬姛錛?);
                goahead = false;
            }
            else
                System.out.println("!-榪炴帴澶辮觸錛屾?zhèn)ㄨ緭鍏ョ殑IP鍙?qiáng)绔彛鍙烽敊璇?);
        }
       
        // 榪炴帴鏈嶅姟鍣?br />        consumer.connectServer(getIp, getPort);
       
        // 杈撳叆鏄電О
        boolean goon = true;
        while (goon)
        {
            // 絎笁姝ワ細(xì)杈撳叆鏄電О
            System.out.println("3.璇瘋緭鍏ユ?zhèn)ㄧ櫿d綍鍚庢樉紺虹殑鏄電О(鍙兘杈撳叆涓枃銆佽嫳鏂囧瓧姣嶅強(qiáng)鏁板瓧)錛?);
            String nick = input.next();
            boolean judge = consumer.checkNickName(nick);
            // 鍒ゆ柇鏄電О鏄惁杈撳叆姝g‘
            if (judge)
                goon = false;
            else
                System.out.println("!-鎮(zhèn)ㄨ緭鍏ョ殑鐢ㄦ埛鍚嶄笉絎﹀悎鏉′歡錛岃閲嶆柊杈撳叆錛?);
        }
       
        // 寮濮嬭繍琛屾帴鏀舵暟鎹?br />        new Thread(consumer).start();
        // 鑱婂ぉ
        String mes = null;
        System.out.println("!-鎮(zhèn)ㄦ垚鍔熻繘鍏ヨ亰澶╁錛?);
       
        while (!(mes = input.nextLine()).equalsIgnoreCase("-quit"))
        {
            // 濡傛灉杈撳叆"-test"鍛戒護(hù)錛屽紑濮嬫祴璇?br />            if (mes.trim().equalsIgnoreCase("-test"))
            {
                consumer.testConnect(getIp, getPort);
                // -getList錛氳幏寰楀湪綰跨敤鎴峰垪琛?br />            }
            else if (mes.trim().equalsIgnoreCase("-getList"))
            {
                consumer.sendMes(mes);
                // -nick 璁劇疆鏄電О
            }
            else if (mes.startsWith("-nick "))
            {
                System.out.println("!-You have named, Can not allowed to rename!");
                // -help 鑾峰緱甯姪鍒楄〃
            }
            else if (mes.equalsIgnoreCase("-help"))
            {
                consumer.helpList();
                // 濡傛灉杈撳叆鐨勬槸絀哄瓧絎︼紝鍒欎笉鍙戦?br />            }
            else if (mes.equals(""))
            {
            }
            else
            {
                consumer.sendMes(mes);
            }
        }
       
        // 閫鍑?br />        input.close();
        consumer.disconnectServer();
       
    }
   
    /**
     * 閿欒鎻愮ず鏍囪
     *
     * @param str
     */
    public static void errorTip(String str)
    {
        System.out.println("-----------------\n" + str + "\n-----------------");
    }
}



]]>
濡備綍鎸囧畾JAVA鐨勮繍琛屽弬鏁幫紵http://www.tkk7.com/tiandizhijian/articles/383085.html縐嬪ぉ鐨勫北璋?/dc:creator>縐嬪ぉ鐨勫北璋?/author>Sat, 14 Jul 2012 04:31:00 GMThttp://www.tkk7.com/tiandizhijian/articles/383085.htmlhttp://www.tkk7.com/tiandizhijian/comments/383085.htmlhttp://www.tkk7.com/tiandizhijian/articles/383085.html#Feedback0http://www.tkk7.com/tiandizhijian/comments/commentRss/383085.htmlhttp://www.tkk7.com/tiandizhijian/services/trackbacks/383085.htmlrem ss.bat

set APP_DIR=D:\tools\tomcat6.0\wtpwebapps\com.tianhe.jxc
set APP_LIB_PATH=%APP_DIR%\WEB-INF\lib
set APP_CLASS_PATH=%APP_DIR%\WEB-INF\classes

java -Djava.ext.dirs=%APP_LIB_PATH% -cp %APP_CLASS_PATH%;. com.tianhe.frm.http.server.SimpleHttpServer -port 8080 -charset gbk

 

rem sc.bat
set APP_DIR=D:\tools\tomcat6.0\wtpwebapps\com.tianhe.jxc
set APP_LIB_PATH=%APP_DIR%\WEB-INF\lib
set APP_CLASS_PATH=%APP_DIR%\WEB-INF\classes

java -Djava.ext.dirs=%APP_LIB_PATH% -classpath -cp %APP_CLASS_PATH%;. com.tianhe.frm.http.client.SimpleHttpClient -url http://www.tkk7.com/Images/adminlogo.gif -dir d:/wallpaper

 

 

 




]]>
主站蜘蛛池模板: 暖暖免费高清日本中文| 亚洲最大av资源站无码av网址| 成人男女网18免费视频| 美女被cao网站免费看在线看| 日韩国产欧美亚洲v片| 亚洲国产成人九九综合| 亚洲VA中文字幕不卡无码| 免费成人午夜视频| 在线a人片天堂免费观看高清| 91制片厂制作传媒免费版樱花| 日韩在线视频线视频免费网站| 中文字幕亚洲情99在线| 亚洲视频一区在线播放| 亚洲AV午夜福利精品一区二区 | 亚洲午夜精品第一区二区8050| 成人免费无码大片a毛片 | 亚洲最大黄色网址| 亚洲电影国产一区| 国产亚洲色婷婷久久99精品| 中文字幕第一页亚洲| 亚洲男人天堂2020| 免费99热在线观看| 国产成人高清精品免费软件| 免费看少妇作爱视频| 卡1卡2卡3卡4卡5免费视频| 毛片免费观看的视频| 成人性生交大片免费看无遮挡| 成人AV免费网址在线观看| 黄+色+性+人免费| 思思re热免费精品视频66| a拍拍男女免费看全片| 3d成人免费动漫在线观看| 99在线观看精品免费99| 在线a免费观看最新网站| 亚洲最大免费视频网| 国产91色综合久久免费分享| 97热久久免费频精品99| 亚洲免费网站观看视频| 女人让男人免费桶爽30分钟| 国产网站在线免费观看| 伊人久久亚洲综合影院|