写点什么

Java 网络:InetAddress 类的应用以及通过 Socket 实现 TCP 编程

发布于: 2021 年 11 月 07 日




如何获取 InetAddress 对象





InetAddress 类没有提供构造器提供了下面两个静态方法来获取 InerAdress 实例:



static InetAddress getByAddress(byte[] addr):根据原始 IP 地址来获取对应的 InetAddress 实例。



static InetAddress getByName(String host):根据主机获取对应的 InetAddress 实例。





Inet 还提供了一些方法来获取 In


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


etAddress 实例对应的 IP 地址和主机名(可查API文档)。




实例:通过 Socket 实现 TCP 编程


==================


java 代码如下:





Client.java





/*


  • 客户端


*/


public class Client {


public static void main(String[] args) {


  try {


    //1.创建客户端Socket,指定服务器地址和端口


    Socket socket=new Socket("localhost", 8888);


    //2.获取输出流,向服务器端发送信息


    OutputStream os=socket.getOutputStream();//字节输出流


    PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流


    pw.write("用户名:alice;密码:123");


    pw.flush();


    socket.shutdownOutput();//关闭输出流


    //3.获取输入流,并读取服务器端的响应信息


    InputStream is=socket.getInputStream();


    BufferedReader br=new BufferedReader(new InputStreamReader(is));


    String info=null;


    while((info=br.readLine())!=null){


      System.out.println("我是客户端,服务器说:"+info);


    }


    //4.关闭资源


    br.close();


    is.close();


    pw.close();


    os.close();


    socket.close();


  } catch (UnknownHostException e) {


    e.printStackTrace();


  } catch (IOException e) {


    e.printStackTrace();


  }


}


}




ServerThread.java





/*


  • 服务器线程处理类


*/


public class ServerThread extends Thread {


// 和本线程相关的 Socket


Socket socket = null;



public ServerThread(Socket socket) {


  this.socket = socket;


}



//线程执行的操作,响应客户端的请求


public void run(){


  InputStream is=null;


  InputStreamReader isr=null;


  BufferedReader br=null;


  OutputStream os=null;


  PrintWriter pw=null;


  try {


    //获取输入流,并读取客户端信息


    is = socket.getInputStream();


    isr = new InputStreamReader(is);


    br = new BufferedReader(isr);


    String info=null;


    while((info=br.readLine())!=null){//循环读取客户端的信息


      System.out.println("我是服务器,客户端说:"+info);


    }


    socket.shutdownInput();//关闭输入流


    //获取输出流,响应客户端的请求


    os = socket.getOutputStream();


    pw = new PrintWriter(os);


    pw.write("欢迎您!");


    pw.flush();//调用flush()方法将缓冲输出


  } catch (IOException e) {


    // TODO Auto-generated catch block


    e.printStackTrace();


  }finally{


    //关闭资源


    try {


      if(pw!=null)


        pw.close();


      if(os!=null)


        os.close();


      if(br!=null)


        br.close();


      if(isr!=null)


        isr.close();


      if(is!=null)


        is.close();


      if(socket!=null)


        socket.close();


    } catch (IOException e) {


      e.printStackTrace();


    }


  }


}


}


评论

发布
暂无评论
Java 网络:InetAddress类的应用以及通过Socket实现TCP编程