Android网络编程(一)之Socket基础

Socket通常称为“”套接字。Socket字面上的中文意思为“插座”。一台服务器可能会提供很多服务,每种服务对应一个Socket,而客户的“插头”也是一个Socket。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。Socket把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。Socket的基本操作包括:(1)连接远程机器(2)发送数据(3)接收数据(4)关闭连接(5)绑定端口(6)监听到达数据(7)在绑定的端口上接受来自远程机器的连接。

服务器要和客户端通信,两者都要实例化一个Socket。服务器和客户端的Socket是不一样的,客户端可以实现连接远程机器、发送数据、接收数据、关闭连接等,服务器还需要实现绑定端口,监听到达的数据,接受来自远程机器的连接。Android在包java.net里面提供了两个类:ServerSocket和Socket,前者用于实例化服务器的Socket,后者用来实例化客户端的Socket。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成客户端到服务器所需的会话。

那么如何构造一个Socket呢????

(1)常用的构造客户端Socket的方法有以下几种:
Socket():创建一个新的未连接的Socket。
Socket(Proxy proxy):使用指定的代理类型创建一个新的未连接的Socket。

Socket(String dstName,int dstPort):使用指定的目标服务器的IP地址和目标服务器的端口号,创建一个新的Socket。

Socket(String dstName,int dstPort,InetAddress localAddress,int localPort):使用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的Socket。

Socket(InetAddress dstAddress,int dstPort):使用指定的本地地址和本地端口,创建一个新的Socket。

Socket(InetAddress dstAddress,int dstPort,InetAddress localAddress,int localPort):使用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的Socket。

其中,proxy为代理服务器地址,dstAddress为目标服务器IP地址,dstPort为目标服务器的端口号(服务器的每种服务都会绑定在一个端口上面),dstName为目标服务器的主机名。

注意:0~1023端口为系统保留,用户设定的端口号应该大于1023.

Socket类重要方法:
(1)Public InputStream getInputStream()                                  读出该Socket中的数据

(2)public OutputStream getOutputStream()                             向该Socket中写入数据

(3)public synchronized void close()                                           关闭该Socket

(2)常用的构造服务器端的ServerSocket的方法有以下几种:
           ServerSocket():构造一个新的未绑定的ServerSocket

           ServerSocket(int port):构造一个新的ServerSocket实例并绑定到指定端口。如果Port参数为0,端口将由操作系统自动分配,此时进入队列的数目将被设置为50.

           ServerSocket(int port,int backlog):构造一个新的ServerSocket实例并绑定到指定端口,并且指定进入队列的数目。如果port参数为0,端口将由操作系统系统分配

           ServerSocket(int port,int backlog,InetAddress localAddress):构造一个新的ServerSocket实例并绑定到指定端口和指定地址。如果localAddress参数为null,则可以使                                                                                                                              用任意地址,如果port参数为0,端口将由操作系统自动分配。

Socket一般有两种类型:TCP套接字和UDP套接字。

 TCP和UDP在传输过程中的具体实现方法不同。两者都接收传输协议数据包并将其内容向前传送到应用层。TCP把消息分解成数据包并在接收端以正确的顺序把它们重新装配起来,TCP还处理对遗失数据包的重传请求,位于上层的应用层要处理的事情就少多了。UDP不提供装配和重传请求这些功能,它只是向前传送信息包。位于上层的应用层必须确保消息是完整的,并且是以正确的顺序装配的。

 转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/27670355

你可能感兴趣的:(socket,tcp,网络编程,UDP,Android4.0)