當我想與我的服務器建立連接時,我的android應用程序在創建新套接字的線路上崩潰。客戶端 - 服務器應用程序中的Android套接字錯誤
我在我的ClientAppl.java中進行連接的代碼如下所示。
public class ClientAppl {
private InetAddress host;
private int port;
private Socket link = null;
ObjectInputStream istream;
ObjectOutputStream ostream;
private static MainActivity mainActivity;
private static ClientAppl instance = new ClientAppl(mainActivity);
private ClientAppl(MainActivity frm){
ClientAppl.mainActivity = frm;
}
public static ClientAppl getInstance(){
return instance;
}
public void makeConnection(String sIP, int port) throws IOException, java.net.ConnectException{
if(link == null){
System.out.println("Make connection...");
this.host = InetAddress.getByName(sIP);
this.port = port;
link = new Socket(host, port);
System.out.println("Inputkanaal & outputkanaal vastleggen...");
ostream = new ObjectOutputStream(link.getOutputStream());
System.out.println("OK - output");
istream = new ObjectInputStream(link.getInputStream());
System.out.println("OK - input");
AcceptMessageHandler amh = new AcceptMessageHandler();
Thread t = new Thread(amh);
t.start();
}
}
在MainActivity.java我將此代碼添加到啓動的連接。
txtServerIP = (EditText)findViewById(R.id.txtServerIP);
txtServerPoort = (EditText)findViewById(R.id.txtServerPoort);
try {
ClientAppl.getInstance().makeConnection(txtServerIP.getText().toString(), Integer.parseInt(txtServerPoort.getText().toString()));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (ConnectException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
這是我的清單文件。怎麼了? :(
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="be.howest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
<activity
android:name="project.client.pc.view.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
plz發佈您的日誌貓 – MAC
您傳遞給套接字構造函數的值是什麼?你確定它們是有效的主機名和端口號嗎? –
哦,是的,忘記發佈logcat。 這些值是服務器的IP地址和端口號。它們是正確的,因爲我的Java客戶端版本使用相同的值並且沒有錯誤。 Logcat:https://docs.google.com/document/d/1HvR9TL5-Ajq57TKsVzRxZVAow2P3i5j0_Hd8MCG1yU8/edit – user1380883