网络通讯基础

基本概念

一,主要协议:

1.OSI
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
2.TCP/IP四层模型

二,DNS——域名系统
将IP地址映射至字符串

三,端口
协议 端口
Telent协议——23
简单邮件传输协议smtp——25
文件传输协议ftp——21
超文本传输协议——80

四,TCP传输控制协议
三次握手

网络通讯 url连接

public static void main(String[] args) throws Exception {
//  获得URL链接
  URL url=new URL("https://www.baidu.com/");
//  打开链接
  URLConnection conn=url.openConnection();
//  获得输入流
  InputStream in=conn.getInputStream();
//  字节流转字符流
  InputStreamReader reade=new InputStreamReader(in);
//  字符流转缓冲流
  BufferedReader bu=new BufferedReader(reade);
  /*
   * 循环读取数据
   */
  String st=null;
  while((st=bu.readLine())!=null) {
   System.out.println(st);
  }
 }

获得主机信息

public static void main(String[] args) throws Exception {
//  获得主机地址信息
  InetAddress address=InetAddress.getLocalHost();
  System.out.println(address);
//  获得主机名
  String name=address.getHostName();
  System.out.println("主机名: "+name);
//  获得本机IP地址
  String add=address.getHostAddress();
  System.out.println(add);
  System.out.println("$$$$$$$$$$$$$$$$$$");
  /*
   * 通过主机名获得全部地址
   */
  InetAddress[] addresses=InetAddress.getAllByName(name);
  for (InetAddress inetAddress : addresses) {
   System.out.println("IP:"+inetAddress.getHostAddress());
  }
 }

服务器客户端通讯——Socket

正常开发的数据走向:
客户端信息->服务器处理->客户端做出反馈

客户端

try {
//   建立客户端套接字
   //要通讯的电脑的Ip地址  端口号(要和服务器的一致)
   Socket socket=new Socket("127.0.0.1",8099);
   System.out.println("客户端启动了:");
   /*
    * 开始通讯
    */
   while(!socket.isClosed()) {//没有关闭
//    发送信息
    ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());
//    获得键盘s输入
    Scanner sc=new Scanner(System.in);
    String s=sc.nextLine();
//    发送数据
    out.writeObject("这是客户端信息:"+s);
//    接受信息
    ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
    String msg=in.readObject().toString();
    System.out.println("客户端接受的信息:"+msg);
   }
  } catch (Exception e) {
  }

服务器端

try {
   /*
    * 创建服务器套接字
    */
//   port通讯端口(注意:客户端的端口号要和该端口一致)
   ServerSocket serverSocket=new ServerSocket(8099);
   System.out.println("服务器启动了:"+serverSocket);
//   监听客户端.一旦链接就创建一个Socket
   Socket socket=serverSocket.accept();
   System.out.println("有客户端链接:");
   
   /*
    * 开始通讯
    * 注意:接受和发送是有顺序的
    */
   while(!socket.isClosed()) {//是否关闭,(关闭
//    先接受
    ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
    String msg=in.readObject().toString();
    System.out.println("服务器接受信息:"+msg);
//    回应信息
    //获得键盘输入
    InputStreamReader reader=new InputStreamReader(System.in);
    BufferedReader br=new BufferedReader(reader);
    //从键盘读取数据
    String line=br.readLine();
//    输出流
    ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());
    out.writeObject(line);
    
   }
   
  } catch (Exception e) {
   e.printStackTrace();
  } 

你可能感兴趣的:(网络通讯基础)