锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩亚洲产在线观看,亚洲美女在线观看播放,www.亚洲精品http://www.tkk7.com/evan8126/zh-cnSun, 11 May 2025 13:11:03 GMTSun, 11 May 2025 13:11:03 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 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚欧在线精品免费观看一区| a级毛片在线免费看| 久久久久久国产精品免费免费| 亚洲国产精品国自产拍电影| 亚洲一区免费观看| 亚洲精品国产福利在线观看| 国产成人精品免费视频大全麻豆| 亚洲欧洲自拍拍偷综合| 99热在线精品免费全部my| 亚洲精品无码成人| 亚洲AV无码乱码精品国产| www在线观看播放免费视频日本| 自拍偷自拍亚洲精品第1页| 国产免费拔擦拔擦8X高清在线人| 亚洲国产美国国产综合一区二区| 2022久久国产精品免费热麻豆| 亚洲三级在线免费观看| 好吊妞788免费视频播放| 色屁屁在线观看视频免费| 久久综合亚洲色HEZYO国产| 免费一区二区无码东京热| 亚洲第一二三四区| 在线观着免费观看国产黄| 黄色视频在线免费观看| 亚洲色欲www综合网| 精品国产免费观看久久久| 2022国内精品免费福利视频| 97亚洲熟妇自偷自拍另类图片| 四虎影院免费视频| 两个人看的www高清免费观看| 亚洲一卡2卡4卡5卡6卡在线99| 波多野结衣免费视频观看 | 亚洲AV无码乱码在线观看牲色| 好湿好大好紧好爽免费视频| 日木av无码专区亚洲av毛片| 国产精品99久久免费| 亚洲欧洲免费视频| 美女扒开尿口给男人爽免费视频| 亚洲日本在线观看| 免费少妇a级毛片人成网| 日本免费人成在线网站|