android socket通讯的问题???

zxsqi521 2009-11-20 04:10:33
为什么我在使用android socket和PC机通讯的时候在接收数据时出现等待状况,服务器端是在PC机上,客户端是在android平台上,1、如果在客户端上发送数据,则服务器端可以正常接收。2、如果在客户端发送数据然后再接收数据,服务器接收数据就会出现等待状况,请问这是为什么???
...全文
899 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxsqi521 2009-11-23
  • 打赏
  • 举报
回复
太好了,非常感谢大家的帮忙
xuzysun 2009-11-21
  • 打赏
  • 举报
回复
有流操作的代码应另起线程!!
zhouyongyang 2009-11-20
  • 打赏
  • 举报
回复
有流操作的代码不要写在主程序里面,,,要另起线程,,在J2me中也这样,,,
SHARKwIre 2009-11-20
  • 打赏
  • 举报
回复
UI线程阻塞了来自server的message。
你把你发送消息的地方放到另外的线程。
我试过,可以得到你要的结果
zxsqi521 2009-11-20
  • 打赏
  • 举报
回复
这是我的客户端代码:
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();
}

}
}

};

}
zxsqi521 2009-11-20
  • 打赏
  • 举报
回复
这是我的客户端代码:
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();
}

}

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧