Android-socket-client 客户端实现

本文介绍了如何在Android平台上实现Socket客户端,重点解决Android 3.0后不能在主线程进行Socket通信的问题。通过一个极客学院的视频为引导,作者优化了代码并修复了一些小bug。文中提供了一个简单的Android Socket客户端示例,包括手动输入IP和端口号,以及超时判断功能。同时,文章分享了学习Socket和AsyncTask的经验,并提供了相关学习资源。
摘要由CSDN通过智能技术生成
               

—————————————————————————————————————————————————————————————————————————————

开发环境:eclipse  +4.0android SDK+串口调试工具


前言:这周的任务是为了 完成socket客户端在安卓平台的开发,能够和服务端正常进行收发信息(还未实现汉字)。开始在网上找了很多程序用来参考,结果都不行,发现android3.0以后就不能在主线程(ui线程)中进行socket网络通信!!看来找的程序比较老了,后来有幸找到了极客学院的一个视频,按照上面的方法直接实现了一下,它的比较简单,所以我又稍微优化了一下,而且它的程序还是有一点小bug的,我修改了一下,不过还有待加强。


ps:模拟器和手机上都能成功运行


首先附上极客学院的视频地址:http://www.iqiyi.com/w_19rtlpgvl1.html


效果图片:

客户端(界面)


服务端:(串口调试助手)


正常通信


超时,即socket连接不上



极客学院中的视频的小bug就是在doInBackground中使用了toast,这个应该是不允许的。

还有就是它的代码中用到了异步通信AsyncTask,我遇到的困难都是因为对它不了解,导致出了很多低级的错误,浪费了我很多的时间,给大家一个链接可以学习一下。

自己的错误也在代码中进行了注释,希望能帮助到大家。

大家可以参考这个链接学习  http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html


自己代码的小特色:

1.可以自己手动输入ip地址和端口号,特别是端口号我们是需要获取数字的,所以这里用了一个Integer.parseInt的方法,当然还增加了一个断开连接。

2.利用了socket.connect这个接口,来判断socket是否连接超时,即服务器连接不上,错误的原因有很多,ip不对啊,端口不对,服务器关闭等等。


个人感觉 android socket客户端的操作流程大致是:

1.首先new 一个socket,然后用ip和端口去初始化它。

2.然后初始化它的outputstream和inputstream,输入输出流,当客户端发数据是操作它的输出流,接受数据是操作它的输入流,将他们放入我们的buf中,最后再对buf进行操作。

ps:其实是比较简单,对我来说很难的应该就是语法吧,很多类的规则和方法不知道怎么去调用,特别是doinbackground中不能操作主线程中的控件和变量真是让我浪费了很久的时间。


附上代码:

代码中我作了一点注释

package com.lzj.example.msocketclient;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.InetSocketAddress;import java.net.Socket;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.text.method.ScrollingMovementMethod;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {  private EditText ip=null,port=nullprivate EditText editTest=nullprivate TextView text=nullprivate Button   send_btn=null,con_btn=null,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值