我正在嘗試使用java應用程序(服務器「PC」)連接android應用程序(客戶端),這裏是我的客戶端代碼。Android Socket編程
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
txt = (EditText) findViewById(R.id.editText1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new CallServer().execute();
}
});
}
public class CallServer extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... arg0) {
String modifiedSentence = "hello";
Socket clientSocket;
try {
clientSocket = new Socket("192.168.1.100", 8081);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes("hello world");
modifiedSentence =
(inFromServer.readLine());
clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return modifiedSentence;
}
protected void onPostExecute(String result) {
txt.setText(result);
}
}
的Android許可
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
我不能用這個代碼中找到的問題,因爲它不會給任何類型的交戰或錯誤我的服務器端代碼工作完美,因爲我已經與其他Java測試它應用程序(客戶端)。沒有任何類型的端口問題,因爲我通過在不同的機器上保留客戶端和服務器端代碼來測試它,並且它工作正常。
您不能從後臺線程更改文本。該部分需要在onPostExecute中。 – kichik