位置: 编程技术 - 正文

Android的socket通信(android socket聊天)

编辑:rootadmin

推荐整理分享Android的socket通信(android socket聊天),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android tcp socket,android中socket,android socket协议,android tcp socket,android tcp socket,android tcp socket,android socket 接收数据,android socket 接收数据,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是Socket? Socket,用于描述IP地址和端口,是一个通信链的句柄,在Internet上的主机一遍运行了多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应不同的服务。 构造Socket Socket的构造方法有以下几种重载形式: (1)Socket()

(2)Socket(InetAddress address, int port)throws UnknownHostException,IOException

(3)Socket(InetAddress address, int port, InetAddress localAddr, int localPort)throws IOException

(4)Socket(String host, int port) throws UnknownHostException,IOException

(5)Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException

各构造方法的用法如下:

设定等待建立连接的超时时间:

Socket socket=new Socket();

SocketAddress remoteAddr=new InetSocketAddress(“localhost”,);

//等待建立连接的超时时间为1分钟

socket.connect(remoteAddr, );

设定服务器的地址:

Socket(InetAddress address, int port)

Socket(String host, int port)

InetAddress类表示IP地址,其用法如下:

//返回本地主机的IP地址

InetAddress addr1=InetAddress.getLocalHost();

//返回代表”..5.7”的IP地址

InetAddress addr2=InetAddress.getByName(“..5.7”);

//返回域名为”www.javathinker.org”的IP地址

InetAddress addr3=InetAddress.getByName(“www.javathinker.org”);

设定客户端的地址:Android的socket通信(android socket聊天)

在一个Socket对象中,既包含远程服务器的IP地址和端口信息,也包含本地客户端的IP地址和端口信息。默认情况下,客户端的IP地址来自于客户程序所在的主机,客户端的端口则由操作系统随机分配。Socket类还有两个构造方法允许显式的设置客户端的IP地址和端口:

Socket(InetAddress address, int port, InetAddress localAddr, int localPort)throws IOException

Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException

客户连接服务器时可能抛出的异常:

当Socket的构造方法请求连接服务器时,可能会抛出以下异常:

l UnknownHostException:如果无法识别主机的名字或IP地址,就会抛出这种异常。

l ConnectException:如果没有服务器进程监听指定的端口,或者服务器进程拒绝连接,就会抛出这种异常。

l SocketTimeoutException:如果等待连接超时,就会抛出这种异常。

l BindException:如果无法把Socket对象与指定的本地IP地址或端口绑定,就会抛出这种异常。

获取Socket的信息 以下方法用于获取Socket的有关信息:

l getInetAddress():获得远程服务器的IP地址。

l getPort():获得远程服务器的端口。

l getLocalAddress():获得客户本地的IP地址。

l getLocalPort():获得客户本地的端口。

l getInputStream():获得输入流。如果Socket还没有连接,或者已经关闭,或者已经通过shutdownInput()方法关闭输入流,那么此方法会抛出IOException。

l getOutputStream():获得输出流。如果Socket还没有连接,或者已经关闭,或者已经通过shutdownOutput()方法关闭输出流,那么此方法会抛出IOException。

了解Socket的用途 说了一大堆关于,到底socket怎么用,用来干什么呢?

看了图大概明白了,socket就是用来和服务器进行通信的方法。

重要的Socket API 重要的Socket API:java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其他方法大家可以参见JDK文档。

1)Accept方法用于产生”阻塞”,知道接收到一个连接,并且返回一个客户端的socket对象实例。”阻塞”是一个术语,它使程序运行暂时”停留”在这个地方,直到一个会话产生,然后程序继续,通常”阻塞”是由循环产生的。 2)getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。 3)getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例,注意:其中getInputStream和getOutputStream方法均可能会产生一个IOException,所以必须使用try/catch捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

Socket连接过程 根据连接启动的方式以及本地套接字连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 服务器监听:是服务器套接字并不定位具体的客户端套接字,而是出于等待连接状态,实时监控网络状态。 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

如何使用adb查看各个文件属性详细信息 adbshell后,进入你想查看属性的文件夹,直接adb-l,该文件夹内各个文件的属性都会出来。

【Rayeager PX2分享】OpenCV入门之线段检测 线段检测主要运用Hough变换,Hough变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出

Android开发资源文件用法小结 本文用来记录在Android开发中经常用到的一些用法arrays.xml定义数组例:resources!--shareitems--string-arrayname="app_share_items"item新浪微博/itemitem腾讯微博/item/string-

标签: android socket聊天

本文链接地址:https://www.jiuchutong.com/biancheng/386019.html 转载请保留说明!

上一篇:Android - 常见错误的解决方法(android遇到的难题,怎么解决的)

下一篇:如何使用adb查看各个文件属性详细信息(adb查看ip地址)

  • 递延所得税资产会计处理全过程
  • 期间费用明细表怎么填
  • 房地产开发公司组织架构
  • 缴纳城镇土地使用税标准
  • 什么叫简易税
  • 装修款需要开发票吗
  • 国际货运代理可以开免税吗
  • 零余额账户出纳做什么
  • 红字发票和蓝字一样吗
  • 汇兑损益结转贷方怎么调整到借方
  • 外商投资企业与内资合资是国企吗
  • 全面解析来料加工企业账务处理
  • 建筑企业临时工工资申报个税
  • 罚款所得税调整
  • 费用怎样确认是可抵扣暂时性差异?
  • 股权转让所得应纳税所得额
  • 地产企业不动产登记入哪个科目?
  • 转让五年以上住房免征个人所得税吗?
  • 发票跨月还能重开吗
  • 公司在外地
  • 计提员工社保拿什么做原始凭证?
  • 如何预防计算机病毒的方法
  • 2021新版win10
  • 如何做会计分录
  • 公司餐饮费怎么做账
  • win10专业版问题
  • 家庭版系统如何重装成专业版本
  • 现金结算起点包括1000元吗
  • 退回的企业所得税怎么做账
  • 报错代码678什么意思
  • thinkphp5自定义标签
  • 工业企业在进行材料采购
  • 深入解析wordpress
  • 在杂志上发表文章算出版吗
  • 货物运输发票怎么备注发票样板
  • 企业利润分配的通常去向包括
  • python雪花算法生成id
  • 低代码开发开源
  • 分享2款CSS3母亲节主题寄语文字动画特效
  • ps怎么把多余的p掉
  • 股权收购账务处理
  • 企业提取盈余公积属于什么会计科目
  • 房产税的租金收入按什么计算的
  • 土地出让与土地划拨有什么区别
  • 企业之间的借款利息收入缴纳增值税吗?
  • 代收的运输费用怎么入账
  • 事业单位财政拨款收入会计分录
  • 项目终止前期费用核销
  • 生产成本设置二级科目
  • 计税工资什么意思2019
  • 核定征收企业可以享受研发费用加计扣除
  • 住房公积金是怎么来的?
  • 购货单位暂欠货款违法吗
  • 员工退回备用金怎么写收据
  • 一般纳税人支出都要交税吗
  • 公司开出发票但未收到款如何写分录?
  • 电子退库纳税人是什么意思
  • 银行日记账怎么导出
  • win8系统忘记电脑开机密码怎么办
  • win8系统没有声音
  • freebsd操作命令
  • WINDOWS系统中删除放入回收站的文件占用什么空间
  • win10 windows update在哪里打开
  • mac怎么设置屏幕显示时间
  • Windows下查看PCI插槽链路
  • Extjs Ext.MessageBox.confirm 确认对话框详解
  • 基于socket的聊天程序
  • unity3drpg游戏教程
  • shell获取命令报错信息
  • node.js适用哪些场景
  • 计算天数的excel公式
  • jquery 文本框
  • jquery可以实现哪些效果
  • 一个超简单的纸飞机
  • 税务稽查协查管理办法 国家税务总局
  • 云南省国家税务局
  • 资源税的税目有7个,其中不包括
  • 深圳市国家税务局网站
  • 河北省发票查询真伪查询国税
  • 税收分类编码1080499
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设