本文所对应的源码在:/html/app/wangluoliulan/2012/0818/76.html
Java Server 源代码:

public class TCPDesktopServer implements Runnable{
 
    public static final String SERVERIP = "192.168.0.149";

    public static final int SERVERPORT = 51706;
 
    public void run() {

         try {

             System.out.println("S: Connecting...");
 
             ServerSocket serverSocket = new ServerSocket(SERVERPORT);

             while (true) {
 
                  Socket client = serverSocket.accept();
                  System.out.println("S: Receiving...");
 
                  try {

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

                      String str = in.readLine();

                      System.out.println("S: Received: '" + str + "'");

                    } catch(Exception e) {

                        System.out.println("S: Error");

                        e.printStackTrace();

                    } finally {

                        client.close();

                        System.out.println("S: Done.");

                    }
 
             }
 
         } catch (Exception e) {

             System.out.println("S: Error");

             e.printStackTrace();

         }

    }

    public static void main (String a[]) {

        Thread desktopServerThread = new Thread(new TCPDesktopServer());

        desktopServerThread.start();

    }
}

 

对上边的源代码做一些介绍:
指定Server监听的端口和服务器IP地址。

public static final String SERVERIP = "192.168.0.149";

public static final int SERVERPORT = 51706;

 

应用之前所指定的IP和Port创建一个ServerSocket对象。

 

ServerSocket serverSocket = new ServerSocket(SERVERPORT);

用于侦听和捕捉通过Socket连接的客户端。

Socket client = serverSocket.accept();

应用Socket创建BufferedReader对象,用于接收Socket Stream中的数据。

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

Android Client 源代码:

InetAddress serverAddr = InetAddress.getByName("192.168.0.149");//TCPServer.SERVERIP

Log.d("TCP", "C: Connecting...");

Socket socket = new Socket(serverAddr, 51706);

String message = "AndroidRes,Where is my Pig (Android)?";

try {

    Log.d("TCP", "C: Sending: '" + message + "'");

    PrintWriter out = new PrintWriter( new BufferedWriter( newOutputStreamWriter(socket.getOutputStream())),true);

        out.println(message);

} catch(Exception e) {

        Log.e("TCP", "S: Error", e);

} finally {

    socket.close();

}

对上边的源代码做一些介绍:
指定Server的IP地址。

InetAddress serverAddr = InetAddress.getByName("192.168.0.149"); 

应用Server的IP和端口建立Socket对象。

Socket socket = new Socket(serverAddr, 51706); 

根据已经建立的Socket来创建PrintWriter,将信息通过这个对象来发送给Server,其中包含了三个部分:

OutputStreamWriter
BufferedWriter
PrintWriter
PrintWriter out = new PrintWriter( new BufferedWriter( newOutputStreamWriter(socket.getOutputStream())),true);