第十四章 网络编程

来源:互联网 发布:天涯明月刀数据异常 编辑:程序博客网 时间:2024/05/21 22:25
C/S
S就是服务器,C是客户端,客户端要与服务器端进行交互必须借助于网络,在JAVA中网络的通信不光可以在C/S中实现也可以B/S中实现。

(了解)
TCP/IP协议
    TCP/IP(Transmission Control Protocol / Internet Protocol) 传输控制/网际协议,又称网络通信协议,TCP、IP协议时网络通信中最基本的协议
IP
    计算机在网络的唯一标识,是计算机的数字标识
域名
    计算机的字符化标识,域名不能被网络设别识别,必须借助DNS进行解析才能获取
端口
    计算机与外界通讯的接口,其范围是0~65535,1024以外端口为系统所占用



P2P:Point to Point ,网络中两台计算机进行互相访问,在这过程中,两台计算机既担负着服务器的角色提供信息,又担负着客户端的角色获取信息。
        要实现P2P必须先通过IP定位知道对方在网络中的位置


InetAddress
    该类表示IP地址对象,可以通过InetAddress可以获取计算机的IP,主机名等计算机身份信息

通过主机名或域名获取IP地址
  1. 创建IP地址对象根据域名创建
  2. InetAddress address = InetAddress.getByName("www.qq.com");
  3. 打印显示该地址中的IP
  4. System.out.println(address.getHostAddress());
通过IP地址或域名获取主机名
  1. //根据IP地址创建
  2. InetAddress address = InetAddress.getByName("192.168.9.100");
  3. //获取主机名称
  4. System.out.println(address.getHostName());

Socket对象
    Socket又称套接字,是TCP/IP协议中的基本概念,Socket是两个程序进行通讯的端点,其功能是负责将信息先写入Socket,再将TCP/IP包信息发送到网络中另一个Socket端,Sockte可以在同一台电脑中,也可以网络中的远程计算机上。

ServerSocket服务端
    ServerSocket是建立在服务器端的套接字,负责开放端口并监测连入的客户端套接字。
     服务器端的监听
               Socket socket = server.accept();
    服务器端以阻塞的方式监听连入的客户端,获取客户端套接字对象
  1. //创建服务端的sockect对象,该对象打开了9090端口
  2. System.out.println("服务器开启了9090端口");
  3. ServerSocket server = new ServerSocket(9090);
  4. //开启服务端的socket,并通过线程阻塞的方式负责监听连入该服务端客户端socket
  5. //返回值表示连入服务器的客户端对象
  6. System.out.println("服务器运行中,正在等待客户端等的连接…………");
  7. Socket client = server.accept();
  8. System.out.println(client.getInetAddress().getHostAddress()+"已经连入服务器");


Socket客户端
    Socket是客户端的访问接口,用于对服务器端的访问,负责将信息写入并发送给服务器端。
  1. System.out.println("客户端正在连接服务器.......");
  2. Socket client = new Socket("192.168.9.100", 9090);
  3. System.out.println("服务器连接成功");
  4. //创建字符流用来接收键盘的输入
  5. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Socket具备两个字节流获取的方法
       getInputStream()
       getOutputStream()
  1. //获取客户端的输入流,读取客户端发送的信息
  2. InputStream is = client.getInputStream();
  1. //获取客户端等的输出流,用来将数据写给服务器
  2. OutputStream os = client.getOutputStream();

  1. //客户端的输出流
  2. private BufferedWriter writer;
  3. //客户端的输入流
  4. private BufferedReader reader;
  5. //获取输出流
  6. writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  7. //获取输入流
  8. reader = new BufferedReader(new InputStreamReader(client.getInputStream()));


1对1的数据传输
    建立服务器端打开开放端口并监听客户端
    建立客户端连接服务器,写入数据并通过输出流传递给服务器端

1对多传输
       建立服务器并打开端口并监听连入的客户端
       通过多线程管理多个连入的客户端,每个客户端分别开辟线程管理
       建立客户端
0 0
原创粉丝点击