2020-09-06

Socket编程(Android客户端+PC服务器端)

星旅zl 2017-09-16 14:26:18  4101  收藏 4

分类专栏: Android

版权

一个多月没有写东西了,感觉像过了一个暑假。。。废话不多说了,今天来记录一下这两天学习Socket的内容。按照我研究思路来进行一步步的深入Socket。

 

一、什么是Socket

 

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

      这是百度提供的解释,按我的理解,其实Socket就是通讯的一种方式,数据进行交换的通道口,让客户端和服务器端建立其沟通的通道。

 

 

二、Socket区别于Http请求

Socket通讯在双方建立其连接后就可以直接进行数据传输,数据丢失率低,使用简单且易于移植,而Http则是要客户端进行请求后服务器端才能进行数据的返回,并且http头包含了很多的信息,影响通讯的速率。

(额外的说一下,安卓网络通讯一般有两种方式:走Http协议和Socket(套接字))

 

三、Socket的传输模式(TCP面向连接和UDP无连接)
     Socket有两种主要的操作方式:面向连接的和无连接的,即TCP和UDP。
  面向连接的Socket操作就像一部电话,Socket必须在发送数据之前与目的地的Socket取得连接,一旦连接建立了,Socket就可以使用一个流接口进行打开、读写以及关闭操作。并且,所有发送的数据在另一端都会以相同的顺序被接收。
  无连接的Socket操作就像一个邮件投递,每一个数据报都是一个独立的单元,它包含了这次投递的所有信息(目的地址和要发送的内容)。在这个模式下的Socket不需要连接目的地Socket,它只是简单的投出数据报。


四、TCP方式的Socket连接实例
这个不多说,可以参考这篇文章:http://blog.csdn.net/x605940745/article/details/17001641

我这里只解析一下这篇文章中的一些要点

1、客户端和服务器端的选择:客户端一般是我们手机端,可以和文章中的一样配置,关于服务器端,其实只要安装了JDK,自然就拥有通讯的功能,我们只需要在Eclipse或者MyEclipse中写好文章中服务器端的代码,运行起来即可,用accept()方法启动服务器端,等待客户端的连接,在未连接的情况下,服务器端处于堵塞的状态。

 

2、看到客户端连接服务器端需要填写IP,我对这个疑惑了一会,后面发现只要能在cmd中能ping XXip -t(即自己的电脑的IP),你就能和服务端联系。

 

3、最后就是端口号啦,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才 能获得相应的服务。0~1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突。在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。

 

最后给个截图,我这里使用的通讯端口号是19999

 

 

这篇文章也可以看一下,写的也可以,这里我就不多说了

http://www.cnblogs.com/menlsh/archive/2013/06/12/3133296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值