2582|3

3190

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

在安卓中使用Socket实现数据传输的问题 [复制链接]

我在学习安卓,用Socket实现数据传输。
我看的Android智能穿戴设备开发从入门到精通。服务器端
是java工程,代码如下:
public class AndroidServer implements Runnable {
        public void run(){
                try{
                        ServerSocket serverSocket=new ServerSocket(54321);
                        while(true)
                        {
                                System.out.println("等待接收用户连接:");
                                Socket client=serverSocket.accept();
                                try
                                {
                                        BufferedReader in=new BufferedReader(new
                                                        InputStreamReader(client.getInputStream()));
                                        String str=in.readLine();
                                        System.out.println("read: "+str);
                                        PrintWriter out=new PrintWriter(new BufferedWriter(new
                                                        OutputStreamWriter(client.getOutputStream())),true);
                                        out.println("return  "+str);
                                        in.close();
                                        out.close();
                                }catch(Exception ex)
                                {
                                        System.out.println(ex.getMessage());
                                        ex.printStackTrace();
                                }
                                finally
                                {
                                        client.close();
                                        System.out.println("close");
                                }
                        }
                }catch(IOException e){
                        System.out.println(e.getMessage());
                }
        }
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Thread desktopServerThread=new Thread(new AndroidServer());
                desktopServerThread.start();
        }

}
客户端是安卓工程,布局文件如下:
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="14dp"
        android:ems="10" >

        
   

            android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/editText1"
        android:layout_marginRight="14dp"
        android:layout_marginTop="67dp"
        android:text="发送" />

            android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="39dp"
        android:text="1" />

一个编辑框、一个按钮、一个文本框。
源代码如下:
public class MainActivity extends ActionBarActivity {
        private TextView text1;
        private Button but1;
        private EditText edit1;
        private final String DEBUG_TAG="mySocketAct";
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                text1=(TextView)findViewById(R.id.textView2);
                but1=(Button)findViewById(R.id.button1);
                edit1=(EditText)findViewById(R.id.editText1);
                but1.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View v){
                                Socket socket=null;
                                String mesg=edit1.getText().toString()+"\r\n";
                                edit1.setText("");
                                Log.e("dddd", "sent id");
                                try{
                                        socket =new Socket("192.168.1.101",54321);
                                        PrintWriter out=new PrintWriter(new BufferedWriter(new
                                                        OutputStreamWriter(socket.getOutputStream())),true);
                                        out.println(mesg);
                                       
                                        BufferedReader br=new BufferedReader(new
                                                        InputStreamReader(socket.getInputStream()));
                                        String mstr=br.readLine();
                                        if(mstr!=null)
                                        {
                                                text1.setText(mstr);
                                        }else
                                        {
                                                text1.setText("数据错误");
                                        }
                                        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());
                                }
                        }
                });
        }

AndroidManifest.xml添加了权限:


最新回复

那两个错误都是你程序里自己打印出来的,而且输出信息不全,无法判断哪里出错。 你安卓程序里用IP是192。168。。,不知道是否是电脑跟自己通信,我电脑跟自己通讯安卓端回环地址是10。0。2。2  详情 回复 发表于 2015-11-12 20:57
点赞 关注(1)
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

回复
举报

3190

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
先运行服务器:

再运行客户端,在编辑框里输入文字,点击发送,没反应。
调试了一下,LogCat里打印错误信息:

请高手指教,哪里错了?谢谢!
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复

242

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
那两个错误都是你程序里自己打印出来的,而且输出信息不全,无法判断哪里出错。
你安卓程序里用IP是192。168。。,不知道是否是电脑跟自己通信,我电脑跟自己通讯安卓端回环地址是10。0。2。2
 
 
 

回复

3190

帖子

0

TA的资源

纯净的硅(高级)

4
 
是和自己通讯。
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表