客户端Socket

客户端Socket(连接是全双工的)



Socket socket = new Socket(host,port);

连接失败,抛出IOEXception异常



setSoTimeOut()方法为连接设置一个超时时间。

服务器拒绝连接,抛出ConnectEXception异常;

路由器无法确定如何将包发给服务器,则抛出NoRouteToHostException异常;

连接服务器期间,服务器挂起,抛出SocketTimeOutException异常。



getOutputStream()请求输出流

向Socket另一端发送数据。



半关闭Socket


close()关闭Socket的输入和输出;

shutdownInput()关闭输入

shutdownOutput()关闭输出

关闭输入之后再读取输入流会返回-1,关闭输出之后再写入Socket会抛出一个IOException异常

半关闭连接后,最终还是要close()关闭Socket;

isInputShutdown()确定是否关闭输入流;

isOutputShutdown()确定是否关闭输出流;



构造和连接Socket


每个Socket构造函数指定要连接的主机和端口。

主机可以指定为InetAddressString

远程端口指定为1到65535之间到int值。

域名服务器无法解析这个主机名或域名服务器没有运行,这个构造函数会抛出UnknownHostException异常。

其他原因未能打开Socket,抛出IOException异常。



选择从哪个本地接口连接


Socket(String host, int port,InetAddress interface, int localPort)

后两个参数指定的本地网络连接接口和端口。



构造但不连接


Socket()无参数创建

connect(SocketAddress,int)为此方法传入SocketAddress建立连接。

可以有第二个参数来设置等待时间。



Socket地址


SocketAddress类的主要目的就是为了暂时连接的socket信息提供一个存储;

getRemoteSocketAddress()返回所连接系统的地址;

getLocalSocketAddress()返回发起连接的地址;

如果socket没有连接,返回null;

InetSocketAddress类创建的两种方式:

InetSocketAddress(host,port)

InetSocketAddress(port)

InetSocketAddress.createUnresolved(host, port)静态工厂方法,不在DNS中查找主机

获取方法:

getAddress();

getPort();

getHostName();



获取Socket信息

getInetAddress();

getPort();

getLocalAddress();

getLocalPort();



关闭还是连接

isClosed()关闭返回ture,否则false;

isConnected()指出Socket是否从未连接过一个远程主机。连接过返回true;

isBound()Socket是否成功地绑定到本地系统上的出站端口。

isConnected()远程断,isBound()本地端



toString()获取Socket完整信息


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值