Android使用socket创建简单TCP连接的方法
本文实例讲述了android使用socket创建简单tcp连接的方法。分享给大家供大家参考,具体如下:
不管是在java还是android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。
这里以一个简单的demo演示一个最基本的socket编程。
先写服务端。服务端是java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新建一个绑定端口的serversocket,监听客户端请求(死循环监听)。当接收到客户端消息时,读取消息、处理,然后返回给客户端。代码如下:(已有较详尽注释)
public class simpleserver { /** * @param args * @throws ioexception */ public static void main(string[] args) throws ioexception { // todo auto-generated method stub //创建一个serversocket,用于监听客户端socket的连接请求 serversocket ss=new serversocket(50069); //采用循环不断接受来自客户端的请求,服务器端也对应产生一个socket while(true){ socket s = ss.accept(); //接收客户端消息 bufferedreader br = new bufferedreader(new inputstreamreader(s.getinputstream())); system.out.println("-------------------------"); string tt = br.readline(); string res = "server 回复了你的"+tt; system.out.println(res); outputstream os=s.getoutputstream(); os.write(res.getbytes("utf-8")); system.out.println("-------------------------"); //os.close(); s.shutdownoutput(); s.close(); } }}
客户端是新建一个绑定ip(服务端)和端口号(和服务端一样)的socket,然后以流的形式发送内容给服务端(这里的发送要注意给出结束标志,如半关闭),并读取发回的内容(此处的读取是一个等待过程,也就是说,在很长一段时间内,如果服务端发回消息则读取,没有发回则会等待,也就是阻塞)。最后关闭socket。代码如下:
public class mainactivity extends activity implements runnable{ edittext show; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); show = (edittext) findviewbyid(r.id.edit1); mainactivity mythread = new mainactivity(); thread thread = new thread(mythread); thread.start(); } @override public void run() { try { socket socket = new socket("192.168.145.96", 50069); //设置10秒之后即认为是超时 socket.setsotimeout(10000); //发送数据给服务端 outputstream outputstream = socket.getoutputstream(); outputstream.write("hello,server".getbytes("utf-8")); socket.shutdownoutput(); //读取数据 bufferedreader br = new bufferedreader(new inputstreamreader(socket.getinputstream())); string line = br.readline(); //打印读取到的数据 log.e("mainactivity", ">>>>>>>>>>>>>>>>>>>>>>>>>" + line); br.close(); socket.close(); } catch (unknownhostexception e) { // todo auto-generated catch block log.e("unknownhost", "来自服务器的数据"); e.printstacktrace(); } catch (ioexception e) { log.e("ioexception", "来自服务器的数据"); // todo auto-generated catch block e.printstacktrace(); } } }
最后,把服务端运行起来,就可以运行客户端进行演示了。
更多关于android相关内容感兴趣的读者可查看本站专题:《android通信方式总结》、《android调试技巧与常见问题解决方法汇总》、《android开发入门与进阶教程》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
上一篇: requests和lxml实现爬虫的方法
推荐阅读
-
Android使用socket创建简单TCP连接的方法
-
Android中使用socket通信实现消息推送的方法详解
-
简单学习Android Socket的使用方法
-
Android使用socket创建简单TCP连接的方法
-
简单学习Android Socket的使用方法
-
python使用socket连接远程服务器的方法
-
关于 python gevent 架框 作为 TCP服务器 的 代码问题 , 每个 socket 的 消息 接收 是否有使用 事件监听回调的方法呢?
-
Android编程使用HTTP协议与TCP协议实现上传文件的方法
-
Android编程使用GestureDetector实现简单手势监听与处理的方法
-
Android编程使用HTTP协议与TCP协议实现上传文件的方法