Socket通信

在基于流套接字的数据传递方式下,在两个网络应用程序(一个称为服务器应用,另一个称为客户机应用)之间发送和接收信息时,需要建立一个可靠的连接。Java中与流套接字相关联的类有3个:
InetAddress
ServerSocket
Socket

InetAddress对象描绘了32位或128位IP地址
ServerSocket对象用在服务器应用中
Socket对象是建立网络连接时使用的。

InetAddress类
Internet上通过IP地址或域名标识主机,而InetAddress类用来表示与Internet地址相关的操作。InetAddress类没有构造方法,要创建该类的实例对象,可以通过该类的静态方法获得该对象。

常用的一组静态方法:
InetAddress getLocalHost(): 获得本地机的InetAddress对象

InetAddress getByName(String host): 获得由host指定的InetAddress对象,host是计算机的域名

InetAddress[ ] getAllmyName(String host): 在Web中,可以用相同的名字代表一组计算机获得具有相同名字的一组InetAddress对象

InetAddress对象的一些操作方法:

byte[ ] getAddress(): 获得IP地址

String getHostName(): 得到主机名

String toString(): 得到主机名和IP地址的字符串

Socket类
Socket是建立网络连接时使用的,在连接成功时,客户和服务器应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不会因为在服务器端或在客户端而产生不同级别。

当客户程序需要与服务器程序通信时,客户程序在客户机要创建一个Socket对象。

Socket类两个常用的构造函数:

Socket(InetAddress addr,int port)

Socket(String host,int port)

创建了一个Socket对象后,应用程序可通过调用Socket对象的getInputStream()方法获得输入流,以获取对方传送来的消息;通过调用Socket对象的getOutputStream()方法获得输出流,向对方发送信息。

在读写活动完成之后,应用程序调用close()方法关闭流和套接字。

ServerSocket类

服务器程序需要创建一个ServerSocket对象,用于在指定端口上监听客户端连接请求。

两个常用的构造方法:

ServerSocket(int port): 在指定端口上创建一个ServerSocket
对象。服务器应用使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口)。

ServerSocket(int port,int queueLength): Server在指定端口上监听客户端连接请求,并指定允许连接的客户最大数目

接下来服务程序进入无限循环之中,无限循环从调用ServerSocket的accept()方法开始,在调用开始后,accept()方法将导致调用线程阻塞直到连接建立。在建立连接后,accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。然后双方就可利用建立起来的流套接字进行通信。

通信过程
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值