android device socket 连接pc端的服务器总是不成功。
PC机上的服务器已经启动 PC机 "192.168.1.102" 侦听端口:4567
我也重新建了几个项目添加了<uses-permission android:name="android.permission.INTERNET" />
,但是还是异常每次调试都是跳到异常;
      catch (IOException e) 
      {
          e.printStackTrace();
      } android device 代码如下:package com.socketTest.test;import android.app.Activity;
import android.os.Bundle;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import android.util.Log;public class SocketTestActivity extends Activity 
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Socket socket = null;
        try 
        {
           socket = new Socket( "192.168.1.102", 4567);
           // 向服务器发送信息
           PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
           out.println("fsdf");           // 接受服务器的信息
           BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream()));
           String mstr = br.readLine();
           if (mstr != null) 
           {
           }
           out.close();
           br.close();
           socket.close();
      } 
      catch (UnknownHostException e) 
      {
           e.printStackTrace();
      } 
      catch (IOException e) 
      {
          e.printStackTrace();
      } 
      catch (Exception e) 
      {
          //Log.e(DEBUG_TAG, e.toString());
      }
    }
}andriodmanifest.xml 文件内容如下:<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.socketTest.test"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="3" />    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SocketTestActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <uses-permission android:name="android.permission.INTERNET" />
            </intent-filter>
        </activity>    </application>
</manifest>

解决方案 »

  1.   

    socket = new Socket( "192.168.1.102", 4567); 如果IP是外网可以,
    是局域网的话 需要使用android 命令工具,把端口和PC端口进行映射才能正常连接上。
      

  2.   

    <uses-permission android:name="android.permission.INTERNET" />
    这句是不是应该放到<application></application>的外层啊。还有如果用的模拟器测试的话,
    socket = new Socket( "192.168.1.102", 4567); 
    应该改成socket = new Socket( "10.0.2.2", 4567); 
      

  3.   

    我也是老报同样的错误,如果用自己机器测试的话socket = new Socket( "127.0.0.1", 4567);  
    这样可以么   还需要那什么端口可pc端口影射么
      

  4.   

    用模拟器吧 
    用真机的话用wifi也可以
    要不你cmnet的话 需要装花生壳