锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久水蜜桃亚洲av无码精品麻豆,亚洲日韩区在线电影,国产精品亚洲一区二区三区久久http://www.tkk7.com/evan8126/zh-cnSun, 11 May 2025 13:05:53 GMTSun, 11 May 2025 13:05:53 GMT60綆鍗曠殑榪滅▼璋冪敤瀹炵幇http://www.tkk7.com/evan8126/archive/2012/12/26/393518.htmlEvan.leeEvan.leeWed, 26 Dec 2012 11:25:00 GMThttp://www.tkk7.com/evan8126/archive/2012/12/26/393518.htmlhttp://www.tkk7.com/evan8126/comments/393518.htmlhttp://www.tkk7.com/evan8126/archive/2012/12/26/393518.html#Feedback0http://www.tkk7.com/evan8126/comments/commentRss/393518.htmlhttp://www.tkk7.com/evan8126/services/trackbacks/393518.html榪滅▼璋冪敤鏄吀鍨嬬殑CS妯″瀷錛孲erver绔彁渚涙湇鍔★紝瀹㈡埛绔皟鐢ㄥ緱鍒扮粨鏋?br />
鍏堢湅鏈嶅姟绔彁渚涙湇鍔$殑鏂規硶
 1 /**
 2      * 鎻愪緵鏈嶅姟
 3      *
 4      * @param service 鏈嶅姟瀹炵幇
 5      * @param port    绔彛錛堝彲浠ュ弻鍙戠害瀹氾級
 6      * @throws Exception
 7      */
 8     public static void provide(final Object service, final int port) throws Exception {
 9         //鍙傛暟媯鏌?/span>
10         if (service == null) {
11             throw new IllegalArgumentException("The service can't be null!");
12         }
13         if (port > 65535) {
14             throw new IllegalArgumentException("The host can't greater than 65535!");
15         }
16         //寮鍚竴涓猄erverSocket鎺ユ敹璇鋒眰
17         ServerSocket serverSocket = new ServerSocket(port);
18         //姝誨驚鐜瓑寰呰姹?/span>
19         while (true) {
20             //鎺ュ彈鍒拌姹傦紝鑾峰彇socket
21             final Socket socket = serverSocket.accept();
22             try {
23                 //寮鍚竴涓嚎紼嬪鐞?/span>
24                 new Thread(new Runnable() {
25                     @Override
26                     public void run() {
27                         try {
28                             try {
29                                 //閲峴ocket涓幏鍙栬緭鍏ユ祦
30                                 ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
31                                 try {
32                                     //鑾峰彇鏂規硶鍚?/span>
33                                     String methodName = ois.readUTF();
34                                     //鑾峰彇鏂規硶鍙傛暟鏁扮粍
35                                     Class[] methodParameterTypes = (Class[]) ois.readObject();
36                                     //鑾峰彇鍙傛暟鍊兼暟緇?/span>
37                                     Object[] arguments = (Object[]) ois.readObject();
38                                     //鏍規嵁鏂規硶鍚嶅拰鏂規硶鍙傛暟鑾峰彇鏂規硶(鏍規嵁鏂規硶鍚嶅拰鏂規硶鍙傛暟鍙互鍞竴瀹氫綅鍒頒竴涓柟娉?
39                                     Method method = service.getClass().getMethod(methodName, methodParameterTypes);
40                                     if (method == null) {
41                                         throw new NoSuchMethodException();
42                                     }
43                                     //鎵ц鏂規硶
44                                     Object result = method.invoke(service, arguments);
45                                     System.out.println("Method:" + methodName + ";Arguments:" + arguments + "  invoke!");
46                                     //鑾峰彇socket杈撳嚭嫻?/span>
47                                     ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
48                                     try {
49                                         //杈撳嚭緇撴灉
50                                         oos.writeObject(result);
51                                     } finally {
52                                         oos.close();
53                                     }
54                                 } finally {
55                                     ois.close();
56                                 }
57                             } finally {
58                                 socket.close();
59                             }
60                         } catch (Exception e) {
61                             //璁頒釜鏃ュ織鍟ョ殑
62                             e.printStackTrace();
63                         }
64                     }
65                 }).start();
66             } catch (Exception e) {
67                 //璁頒釜鏃ュ織鍟ョ殑
68                 e.printStackTrace();
69             }
70         }
71     }

鐒跺悗鏄秷璐圭殑鏂規硶

**
     * 娑堣垂鏈嶅姟
     *
     * @param clazz 鎺ュ彛綾?br />     * @param host  鍙戝竷鏈嶅姟鏈哄櫒鐨刪ost
     * @param port  鍙戝竷鏈嶅姟鏈哄櫒鐨刾ort
     * @return
     */
    public static Object consume(final Class clazz, final String host, final int port) {
        //鍙傛暟媯鏌?/span>
        if (clazz == null) {
            throw new IllegalArgumentException("The clazz can't be null!");
        }
        if (host == null || host.isEmpty()) {
            throw new IllegalArgumentException("The host can't be null or empty!");
        }
        if (port > 65535) {
            throw new IllegalArgumentException("The host can't greater than 65535!");
        }
        //鐢熸垚浠g悊錛屾瘡嬈¤皟鐢ㄦ柟娉曞叾瀹炴槸璋冪敤榪滅▼鐨勬湇鍔?/span>
        Object proxy = Proxy.newProxyInstance(clazz.getClassLoader(), new Class[]{clazz}, new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] arguments) throws Throwable {
                //寤虹珛socket閾炬帴
                Socket socket = new Socket(host, port);
                try {
                    //鑾峰彇杈撳嚭嫻?/span>
                    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
                    try {
                        String methodName = method.getName();
                        Class[] methodParameterTypes = method.getParameterTypes();
                        //杈撳嚭瑕佽皟鐢ㄧ殑鏂規硶鍚?/span>
                        oos.writeUTF(methodName);
                        //杈撳嚭瑕佽皟鐢ㄧ殑鏂規硶鍙傛暟鍒楄〃
                        oos.writeObject(methodParameterTypes);
                        //杈撳嚭瑕佽皟鐢ㄧ殑鏂規硶鍙傛暟
                        oos.writeObject(arguments);
                        ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
                        try {
                            //鑾峰彇緇撴灉
                            Object result = ois.readObject();
                            //鍙兘榪斿洖鐨勫璞℃槸寮傚父
                            if (result instanceof Throwable) {
                                throw (Throwable) result;
                            }
                            return result;
                        } finally {
                            ois.close();
                        }
                    } finally {
                        oos.close();
                    }
                } finally {
                    socket.close();
                }
            }
        });
        return proxy;
    }

涓鑸鍙e彲浠ュ弻鏂圭害瀹氾紝鑰宧ost鍙互閲囩敤configServer鐨勬柟娉曡В鍐籌紝涔熷氨鏄紑鍚竴涓湇鍔★紝褰撳惎鍔ㄤ竴涓湇鍔$殑鏃跺欏埌configServer娉ㄥ唽涓涓嬶紙鏈嶅姟鍚?host錛夛紝濡傛灉鏄鍙版湇鍔″櫒鎻愪緵鏈嶅姟錛宧ost灝辨槸涓涓猯ist錛岃皟鐢ㄦ柟鍙戣搗璋冪敤鐨勬椂鍊欓鍏堝埌configServer鏍規嵁鏈嶅姟鍚嶈幏鍙杊ost鍒楄〃錛岀劧鍚庨変竴涓猦ost鍙戣搗璋冪敤錛乧onfigServer鐨勪紭鐐規槸鍙互鍋氬埌寰堝鎺у埗錛屾瘮濡傛祦閲忔帶鍒訛紝鏉冮噸鎺у埗錛岃皟鐢╤ost鍒楄〃緇存姢錛堟鎺夊氨鍓旈櫎錛岄噸璇曟満鍒訛級絳夌瓑,榪欐牱璋冪敤鏂逛笉鐢ㄥ叧蹇冩垜璋冪敤鐨勬槸鍝彴鏈哄櫒錛屽彧鐢ㄥ叧蹇冩垜璋冪敤鍝釜鏂規硶銆備絾涔熸湁鍧忓錛屼竴鏃onfigServer鎸傛帀浜?......錛堝叾瀹炰篃鍙互閫氳繃MS鎴栬皟鐢ㄦ柟鏈湴緙撳瓨璋冪敤鍒楄〃瑙e喅錛夈?br />
涓鑸敱璋冪敤鏂規彁渚涗竴涓帴鍙e寘錛堢畻鏄竴涓弻鏂圭殑綰﹀畾錛夛紝鎺ュ彛綾諱腑瀹氫箟浜嗘彁渚涘彂鎻愪緵鐨勬柟娉?br />濡傛垜浠彂甯冧竴涓畝鍗曠殑鏈嶅姟
1 public interface Girl {
2     //鎻愪緵鏈嶅姟
3     String server(String name);
4 }

瀹炵幇
1 public class GirlImpl implements Girl{
2     @Override
3     public String server(String name) {
4         return name+"浜氱編鐖?;
5     }
6 }
鍙戝竷鏈嶅姟
榪欓噷浣犲彲浠ュ啓鍦ㄤ竴涓猰ain鏂規硶涓紝涔熷彲浠ラ厤緗竴涓猄pring鐨刡ean錛屽茍閰嶇疆init鏂規硶錛岀劧鍚庡湪init鏂規硶涓紑鍚?br />
1  Girl beautifulGirl=new GirlImpl();
2         try {
                //鍦ㄦ湰鏈虹殑1111绔彛涓婂紑鍚疓irl鐨勬湇鍔?br />3             Utils.provide(beautifulGirl, 1111);
4         } catch (Exception e) {
5             e.printStackTrace();
6         }
娑堣垂
1  try {
2             //浠庢浣犲氨鑾峰緱浜嗕竴涓紓浜瀛愶紝濂瑰彲浠ョ粰浣犳彁渚涘悇縐嶆湇鍔?/span>
3             Girl beautifulGirl= (Girl)Utils.consume(Girl.class, "127.0.0.1", 3333);
4             //浣犲彲浠ユ潵涓涓驚鐜紝鎴栬呮潵涓涓寰幆錛屼竴鐩?img src="http://www.tkk7.com/Images/dot.gif" alt="" />鍝堝搱
5             beautifulGirl.server("yourName");
6         } catch (Exception e) {
7             e.printStackTrace();
8         }

鎬葷粨錛?br />鍏跺疄榪滅▼璋冪敤涔熷氨鏄幏鍙栨湇鍔$殑涓涓唬鐞嗭紝姣忓綋浣犺皟鐢ㄦ湇鍔$殑鏂規硶浜嬶紝浠栭兘浼氭兂鏈嶅姟鏂逛紶鍘繪柟娉曪紝鏂規硶鍙傛暟鍒楄〃錛屽弬鏁幫紝鍓嶄袱涓敤浜庡敮涓紜畾涓涓柟娉曪紝鍚庝竴涓敤浜庢柟娉曡皟鐢ㄣ?br />榪欓噷瀹炵幇鐨勫緢綆絳旓紝褰撶劧榪樻湁寰堝鏉傜殑錛屾瘮濡係pring鐨勫疄鐜幫紝娣樺疂鐨凥SF絳夌瓑


浠ヤ笂涓轟釜浜虹悊瑙o紝濡傛灉鏈夐敊鐨勫湴鏂癸紝嬈㈣繋鎸囨銆?img src ="http://www.tkk7.com/evan8126/aggbug/393518.html" width = "1" height = "1" />

Evan.lee 2012-12-26 19:25 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产精品九九久久免费视频| 亚洲一区二区三区四区视频| 中文字幕无码免费久久99| 一级毛片大全免费播放下载| 亚洲AV成人影视在线观看| 亚洲精品视频免费在线观看| 国产亚洲精品成人a v小说| 免费一级毛片在级播放| 色吊丝永久在线观看最新免费| 免费a级毛片高清视频不卡| 久久久久国色AV免费观看性色| 国产成人精品免费视频动漫| 在线日本高清免费不卡| 97精品免费视频| 亚洲第一成年免费网站| 免费99热在线观看| 激情综合色五月丁香六月亚洲| 久久综合图区亚洲综合图区| 亚洲av无码一区二区三区天堂古代| 国产亚洲成人在线播放va| 亚洲AV成人精品网站在线播放| 亚洲成人黄色网址| 一个人看的www免费在线视频| 88av免费观看入口在线| 亚洲中久无码不卡永久在线观看| 亚洲自偷自拍另类12p| 一个人免费观看www视频| 成人片黄网站A毛片免费| 亚洲四虎永久在线播放| 亚洲一区二区三区四区视频 | 亚洲一区精品伊人久久伊人| 亚洲人成人一区二区三区| 亚洲色偷偷av男人的天堂| 亚洲精品乱码久久久久久V| 国产va免费观看| 国产精品免费观看久久| 亚洲人成在线播放网站| 亚洲av午夜电影在线观看 | 久久er国产精品免费观看8| 久久国产免费福利永久| 区久久AAA片69亚洲|