其中遇到的困难:

1、网上的SOCKET代码大多数是错的,正确的如下

myserver


import java.io.BufferedReader;  

import java.io.IOException;  

import java.io.InputStreamReader;  

import java.io.PrintWriter;  

import java.net.ServerSocket;  

import java.net.Socket;  


public class MyServer {  

   public static void main(String[] args) throws IOException {  

       ServerSocket server = new ServerSocket(10000);  


       while (true) {  

           Socket socket = server.accept();  

           invoke(socket);  

       }  

   }  


   private static void invoke(final Socket client) throws IOException {  

       new Thread(new Runnable() {  

           public void run() {  

               BufferedReader in = null;  

               PrintWriter out = null;  

               try {  

                   in = new BufferedReader(new InputStreamReader(client.getInputStream()));  

                   out = new PrintWriter(client.getOutputStream());  


                   while (true) {  

                       String msg = in.readLine();  

                       System.out.println(msg);  

                       out.println("Server received " + msg);  

                       out.flush();  

                       if (msg.equals("bye")) {  

                           break;  

                       }  

                   }  

               } catch(IOException ex) {  

                   ex.printStackTrace();  

               } finally {  

                   try {  

                       in.close();  

                   } catch (Exception e) {}  

                   try {  

                       out.close();  

                   } catch (Exception e) {}  

                   try {  

                       client.close();  

                   } catch (Exception e) {}  

               }  

           }  

       }).start();  

   }  

}

myclient:


import java.io.BufferedReader;  

import java.io.InputStreamReader;  

import java.io.PrintWriter;  

import java.net.Socket;  


public class MyClient {  

   public static void main(String[] args) throws Exception {  

       Socket socket = new Socket("localhost", 10000);  

       BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  

       PrintWriter out = new PrintWriter(socket.getOutputStream());  

       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  


       while (true) {  

           String msg = reader.readLine();  

           out.println(msg);  

           out.flush();  

           if (msg.equals("bye")) {  

               break;  

           }  

           System.out.println(in.readLine());  

       }  

       socket.close();  

   }  

}  

2、在ANDIORD

在4.0以上,需要使用多线程去用SOCKET,单线程不行,访问网络的行为都需要,因为访问网诺需要时间,主线程为了不影响用户体验

而且需要开启服务

目前遇到问题,第一次打开页面不能获取SOCKET数据,但程序确实执行到那个步骤,第二次就可以,这个问题还是没法解决


3、网上二维码代码差别很大


http://down.51cto.com/data/1145540