刘圣杰

 

Android与服务器通信的方法之一-->TCP

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.InetAddress; 
import java.net.Socket; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Activity01 extends Activity 
{ 
private final String DEBUG_TAG = "Activity01"; 

private TextView mTextView=null; 
private EditText mEditText=null; 
private Button mButton=null; 
 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

mButton = (Button)findViewById(R.id.Button01); 
mTextView=(TextView)findViewById(R.id.TextView01); 
mEditText=(EditText)findViewById(R.id.EditText01); 

//登陆 
mButton.setOnClickListener(new OnClickListener() 
{ 
public void onClick(View v) 
{ 
Socket socket = null; 
String message = mEditText.getText().toString() + "\r\n"; 
try 
{
//创建Socket 
socket = new Socket("116.29.27.138",5554); //查看本机IP,每次开机都不同 
//socket=new Socket("192.168.1.110",50000); 
//向服务器发送消息 
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);      
out.println(message); 

//接收来自服务器的消息 
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
String msg = br.readLine(); 

if ( msg != null ) 
{ 
mTextView.setText(msg); 
} 
else 
{ 
mTextView.setText("数据错误!"); 
} 
//关闭流 
out.close(); 
br.close(); 
//关闭Socket 
socket.close(); 
} 
catch (Exception e) 
{ 
// TODO: handle exception 
Log.e(DEBUG_TAG, e.toString()); 
} 
} 
}); 
} 
} 

服务器端代码: 
Java代码  
package com.yarin.android.Examples_08_04;   
  
import java.io.BufferedReader;   
import java.io.BufferedWriter;   
import java.io.InputStreamReader;   
import java.io.OutputStreamWriter;   
import java.io.PrintWriter;   
import java.net.ServerSocket;   
import java.net.Socket;   
  
public class Server implements Runnable   
{   
    public void run()   
    {   
        try  
        {   
            //创建ServerSocket   
            ServerSocket serverSocket = new ServerSocket(5554);   
            while (true)   
            {   
                //接受客户端请求   
                Socket client = serverSocket.accept();   
                System.out.println("accept");   
                try  
                {   
                    //接收客户端消息   
                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));   
                    String str = in.readLine();   
                    System.out.println("read:" + str);     
                    //向服务器发送消息   
                    PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);         
                    out.println("server message");    
                    //关闭流   
                    out.close();   
                    in.close();   
                }   
                catch (Exception e)   
                {   
                    System.out.println(e.getMessage());   
                    e.printStackTrace();   
                }   
                finally  
                {   
                    //关闭   
                    client.close();   
                    System.out.println("close");   
                }   
            }   
        }   
        catch (Exception e)   
        {   
            System.out.println(e.getMessage());   
        }   
    }   
    //main函数,开启服务器   
    public static void main(String a[])   
    {   
        Thread desktopServerThread = new Thread(new Server());   
        desktopServerThread.start();   
    }   
}  

 

posted on 2012-09-16 20:45  刘圣杰  阅读(4410)  评论(0编辑  收藏  举报

导航