A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-28 15:01  /  1044 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

InetAddress getLocalAddress() 这个是 Socket榜绑定的地址
InetAddress getInetAddress() 这个是获取连接的地址

如果连接成功  ServerSocket应该用    getLocalAddredd()这个方法来获取客户端的ip吧??

1 个回复

倒序浏览
一、获取Socket的信息

  在一个Socket对象中同时包含了远程服务器的IP地址和端口信息,以及客户本地的IP地址和端口信息。此外,从Socket对象中还可以获得输出流和输出流,分别用于向服务器发送数据。一下方法用于获取Socket的有关信息。

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

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

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

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

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

二、关闭Socket

  当客户与服务器的通信结束,应当及时关闭Socket,以释放Socket占用的包括端口在内的各种资源。Socket的close()方法负责关闭Socket。当一个Socket对象被关闭。就不能再通过它的输入流和输出流进行I/O操作,否则会导致IOException。

  为了确保关闭Socket的操作总是被执行,强烈建议吧这个操作放在finally代码块中。

  Socket类提供了3个状态测试的方法:

  isClose():如果Socket已经连接到了远程主机,并且还没关闭,则返回true,否则返回false。

  isConnected():如果Socket曾经连接到远程主机,则返回true,否则返回false。

  isBound():如果Socket已经与一个本地端口绑定,则返回true,否则返回false。

  如果要判断一个Socket对象当前是否处于连接状态,可以采用以下方式:

  boolean isConnected=socket.isConnected()&&!socket.isClosed();

三、半关闭Socket

  如果仅仅是希望关闭输入流和输出流,可以采取Socket提供的半关闭方法。

  shutdownInput():关闭输入流。

  shutdownOuput():关闭输出流。

  Socket还提供了两种方法来测试输入流和输出流是否关闭:

  public  boolean  isInputShutdown():输入流关闭成功返回true,否则false;

  public  boolean  isOutputShutdown():输出流关闭成功返回true,否则false;

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马