下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

学习Android Socket编程

作者:课课家教育     来源: http://www.kokojia.com点击数:1215发布时间: 2016-04-08 09:46:10

标签: AndroidSocketSocket通信

  socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),这些函数我们在后面进行介绍。

学习Android Socket编程_Android_Socket_Socket通信_课课家

    度娘给出的描述:

  通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在InterNET上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

  网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。

  在java中,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

  下面通过一个极为简单的客户端和服务端的连接例子演示下最基本的Android socket通信:

  服务端的代码,在服务端特定的端口9999监听客户端请求,一旦有请求,便会执行,而后继续监听。使用accept()这个阻塞函数,就是该方法被调用后一直等待客户端的请求,直到有请求且连接到同一个端口,accept()返回一个对应于客户端的Socket。本例中很简单,服务端不断监听,一旦有请求就输出一段信息:

  下面是android客户端的相关内容,界面有一个按钮,点击后请求服务端的制定端口,然后显示服务端的内容,值得注意的是在android4.0以上的系统中,是不允许在主线程里面去执行网络相关的请求,否则会报错:NetworkOnMainThreadException,所以本例中新开辟一个线程初始化socket的内容:

  效果图如下:

  另外在配置文件中记得加上权限:

  测试的时候先启动服务端,然后启动客户端,点击按钮就可获取到服务端信息。这是在是一个灰常简单的有关android socket的小例子,可以初步对socket有个简单的了解,这个笔记就先记到这里!

  参考文章:

  

     文章通过上面一个极为简单的客户端和服务端的连接例子演示了android socket通信,实现了服务端不断监听,一旦有请求就输出一段信息。

赞(11)
踩(3)
分享到:
华为认证网络工程师 HCIE直播课视频教程