这是我的客户端代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class XmlBlasterUMS implements Runnable{ public ServerSocket server = null;
public BufferedReader br = null;
public PrintWriter out = null;
public Socket client = null;

@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(5566);
System.out.println("开始监听..............");
while(true){
client = serverSocket.accept();
br = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())));
System.out.println("读取消息");
String message = br.readLine();
System.out.println(message);
System.out.println("发送消息................");
out.println("message is receive");
out.flush();

}
} catch (IOException e) {
e.printStackTrace();
} finally{

try {
if(br != null){
br.close();
}
if(out != null){
out.close();
}
if(client != null){
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

}

public static void main(String[] args){
XmlBlasterUMS ums = new XmlBlasterUMS();
Thread t1 = new Thread(ums);
t1.start();
}

}

解决方案 »

  1.   

    这是我的客户端代码:
    package cn.com.autosoft.android.xmlbaster.client;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;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;public class BlasterClient extends Activity {
        /** Called when the activity is first created. */
    public static final String TAG = "blaster";
    public Button button = null;
    public EditText edittext = null;
    public Socket socket = null;
    public BufferedReader br = null; 
    public PrintWriter out = null;
    public String data = "";

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            button = (Button)this.findViewById(R.id.Button01);
            edittext = (EditText)this.findViewById(R.id.EditText01);
            
            button.setOnClickListener(sendRequest);
            
        }
        
        public OnClickListener sendRequest = new OnClickListener(){ @Override
    public void onClick(View arg0) {

    try {
    Log.d(TAG, "connect");
    socket = new Socket(InetAddress.getByName("192.168.0.156"),5566);
    String message = edittext.getText().toString();
    Log.d(TAG, message);
    out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
    br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    Log.d(TAG, "send message");
    out.write(message);
    out.flush();
    edittext.setText("");
    Log.d(TAG,br.readLine());



    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    try {
    if(br != null){
    br.close();
    }
    if(out != null){
    out.close();
    }
    if(socket != null){
    socket.close();
    }

    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    }
        
        };

    }
      

  2.   

    UI线程阻塞了来自server的message。
    你把你发送消息的地方放到另外的线程。
    我试过,可以得到你要的结果
      

  3.   

    有流操作的代码不要写在主程序里面,,,要另起线程,,在J2me中也这样,,,