设为首页 加入收藏

TOP

Android使用socket与本地PC进行通信的问题
2014-11-24 14:02:07 来源: 作者: 【 】 浏览:0
Tags:Android 使用 socket 本地 进行 通信 问题

1.自己首先建立个java project.用它做为服务器端的程序,代码如下:


package com.server;


import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


}


2.建立android客户端程序,代码如下:


package com.android;


import java.io.IOException;
import java.io.InputStream;
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.widget.TextView;


public class SocketTestActivity extends Activity {
private TextView myTextView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTextView=(TextView)findViewById(R.id.msgTextView01);
myTextView.setText("dd");
try {


Socket socket=new Socket("127.0.0.1",5000);
myTextView.setText("ff");
InputStream in=socket.getInputStream();
byte[]buffer=new byte[in.available()];
in.read(buffer);
String msg=new String(buffer);
System.out.println(msg);
} catch (UnknownHostException e) {

e.printStackTrace();
} catch (IOException e) {
myTextView.setText("ee");
e.printStackTrace();
}
}
}


3.然后运行java project中的程序,查看端口,已经等待监听。


4.运行android应用程序在客户端,报错,无法建立socket连接,错误信息是java.net.PlainSocketImpl.connect,这说明没有连接成功,因为IP地址或端口号错误。


花了好长时间在网上查看原因,有说把ip:127.0.0.1改成10.0.2.0的,结果不行,10.0.2.2是模拟器的IP,相当于本地的127.0.0.1.是android的路由器给每个模拟器分配的IP地址。


有进入cmd,输入ipconfig,直接使用里面的IP的,也不行的。


后来进行端口的映射,使用命令telnet localhost 5554,


diret tcp:5000:6000,也不行,后来发现这是在两天模拟器上进行请求转发是需要配置的信息,不能完成模拟器和PC的通信的。


最后尝试将端口号写成模拟器的端口号,我5554或5556,还是不行的。


这都要害死我了。


这才是王道,这才是正解:


在android的官方网站上是这么写的:本地网络连接受限。每个模拟器运行在后台的虚拟路由上,模拟器不能接入物理路由器。于模拟器交互信息可能被本地的防火墙阻塞,或者被你连接的防火墙阻塞。也就是说两个模拟器直接可以通过请求转发实现通信,模拟器和PC不能通信。


我的解决方法:用真机进行测试,通过了。没有真机的,那就没办法了。希望那些还没解决的人不要浪费时间了。期待Google能快点解决这个问题。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发经验之点击图片判断是.. 下一篇Android中的activity和startActiv..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: