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

© 柳柳桑 黑马粉丝团   /  2015-12-25 16:02  /  11483 人查看  /  30 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文


入学基础day26笔记

26.01_网络编程(网络编程概述)(了解)
  • A:计算机网络
    • 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
  • B:网络编程
    • 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

26.02_网络编程(网络编程三要素之IP概述)(掌握)
  • 每个设备在网络中的唯一标识
  • 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
  • ipconfig:查看本机IP192.168.12.42
  • ping:测试连接192.168.40.62
  • 本地回路地址:127.0.0.1 255.255.255.255是广播地址
  • IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。
  • IPv6:8组,每组4个16进制数。
  • 1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f
  • 1a2b::aaaa:0000:0000:0000:aabb:1f2f
  • 1a2b:0000:aaaa::aabb:1f2f
  • 1a2b:0000:aaaa::0000:aabb:1f2f
  • 1a2b:0000:aaaa:0000::aabb:1f2f

26.03_网络编程(网络编程三要素之端口号概述)(掌握)
  • 每个程序在设备上的唯一标识
  • 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。
  • 端口号范围从0-65535
  • 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。
  • 常用端口
    • mysql: 3306
    • oracle: 1521
    • web: 80
    • tomcat: 8080
    • QQ: 4000
    • feiQ: 2425

26.04_网络编程(网络编程三要素协议)(掌握)
  • 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
  • UDP
    • 面向无连接,数据不安全,速度快。不区分客户端与服务端。
  • TCP   * 面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
    • 三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据

26.05_网络编程(Socket通信原理图解)(了解)
  • A:Socket套接字概述:
    • 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
    • 通信的两端都有Socket。
    • 网络通信其实就是Socket间的通信。
    • 数据在两个Socket间通过IO流传输。
    • Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。

26.06_网络编程(UDP传输)(了解)
  • 1.发送Send
    • 创建DatagramSocket, 随机端口号
    • 创建DatagramPacket, 指定数据, 长度, 地址, 端口
    • 使用DatagramSocket发送DatagramPacket
    • 关闭DatagramSocket
  • 2.接收Receive
    • 创建DatagramSocket, 指定端口号
    • 创建DatagramPacket, 指定数组, 长度
    • 使用DatagramSocket接收DatagramPacket
    • 关闭DatagramSocket
    • 从DatagramPacket中获取数据
  • 3.接收方获取ip和端口号
    • String ip = packet.getAddress().getHostAddress();
    • int port = packet.getPort();

26.07_网络编程(UDP传输优化)
  • 接收端Receive
    1. DatagramSocket socket = new DatagramSocket(6666);                       //创建socket相当于创建码头
    2. DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);       //创建packet相当于创建集装箱

    3. while(true) {
    4.     socket.receive(packet);                                             //接收货物
    5.     byte[] arr = packet.getData();
    6.     int len = packet.getLength();
    7.     String ip = packet.getAddress().getHostAddress();
    8.     System.out.println(ip + ":" + new String(arr,0,len));
    9. }
    复制代码
  • 发送端Send
    1. DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
    2. Scanner sc = new Scanner(System.in);

    3. while(true) {
    4.     String str = sc.nextLine();
    5.     if("quit".equals(str))
    6.         break;
    7.     DatagramPacket packet =                             //创建packet相当于创建集装箱
    8.             new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
    9.     socket.send(packet);            //发货
    10. }
    11. socket.close();
    复制代码

26.08_网络编程(UDP传输多线程)
  • A发送和接收在一个窗口完成
    1. public class Demo3_MoreThread {

    2.     /**
    3.      * @param args
    4.      */
    5.     public static void main(String[] args) {
    6.         new Receive().start();

    7.         new Send().start();
    8.     }

    9. }

    10. class Receive extends Thread {
    11.     public void run() {
    12.         try {
    13.             DatagramSocket socket = new DatagramSocket(6666);                   //创建socket相当于创建码头
    14.             DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);   //创建packet相当于创建集装箱

    15.             while(true) {
    16.                 socket.receive(packet);                                             //接收货物
    17.                 byte[] arr = packet.getData();
    18.                 int len = packet.getLength();
    19.                 String ip = packet.getAddress().getHostAddress();
    20.                 System.out.println(ip + ":" + new String(arr,0,len));
    21.             }
    22.         } catch (IOException e) {

    23.             e.printStackTrace();
    24.         }
    25.     }
    26. }

    27. class Send extends Thread {
    28.     public void run() {
    29.         try {
    30.             DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
    31.             Scanner sc = new Scanner(System.in);

    32.             while(true) {
    33.                 String str = sc.nextLine();
    34.                 if("quit".equals(str))
    35.                     break;
    36.                 DatagramPacket packet =                             //创建packet相当于创建集装箱
    37.                         new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
    38.                 socket.send(packet);            //发货
    39.             }
    40.             socket.close();
    41.         }  catch (IOException e) {

    42.             e.printStackTrace();
    43.         }
    44.     }
    45. }
    复制代码

26.09_网络编程(UDP聊天图形化界面)

26.10_网络编程(UDP聊天发送功能)


26.11_网络编程(UDP聊天记录功能)

26.12_网络编程(UDP聊天清屏功能)

26.13_网络编程(UDP聊天震动功能)

26.14_网络编程(UDP聊天快捷键和代码优化)

26.15_网络编程(UDP聊天生成jar文件)

26.16_网络编程(TCP协议)(掌握)
  • 1.客户端
    • 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
    • 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
    • 输入流可以读取服务端输出流写出的数据
    • 输出流可以写出数据到服务端的输入流
  • 2.服务端
    • 创建ServerSocket(需要指定端口号)
    • 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
    • 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
    • 输入流可以读取客户端输出流写出的数据
    • 输出流可以写出数据到客户端的输入流

26.17_网络编程(TCP协议代码优化)
  • 客户端
    1. Socket socket = new Socket("127.0.0.1", 9999);      //创建Socket指定ip地址和端口号
    2. InputStream is = socket.getInputStream();           //获取输入流
    3. OutputStream os = socket.getOutputStream();         //获取输出流
    4. BufferedReader br = new BufferedReader(new InputStreamReader(is));
    5. PrintStream ps = new PrintStream(os);

    6. System.out.println(br.readLine());
    7. ps.println("我想报名就业班");
    8. System.out.println(br.readLine());
    9. ps.println("爷不学了");
    10. socket.close();
    复制代码
  • 服务端
    1. ServerSocket server = new ServerSocket(9999);   //创建服务器
    2. Socket socket = server.accept();                //接受客户端的请求
    3. InputStream is = socket.getInputStream();       //获取输入流
    4. OutputStream os = socket.getOutputStream();     //获取输出流

    5. BufferedReader br = new BufferedReader(new InputStreamReader(is));
    6. PrintStream ps = new PrintStream(os);

    7. ps.println("欢迎咨询传智播客");
    8. System.out.println(br.readLine());
    9. ps.println("报满了,请报下一期吧");
    10. System.out.println(br.readLine());
    11. server.close();
    12. socket.close();
    复制代码

26.18_网络编程(服务端是多线程的)(掌握)
  1. ServerSocket server = new ServerSocket(9999);   //创建服务器
  2.     while(true) {
  3.         final Socket socket = server.accept();              //接受客户端的请求
  4.         new Thread() {
  5.             public void run() {
  6.                 try {
  7.                     BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  8.                     PrintStream ps = new PrintStream(socket.getOutputStream());
  9.                     ps.println("欢迎咨询传智播客");
  10.                     System.out.println(br.readLine());
  11.                     ps.println("报满了,请报下一期吧");
  12.                     System.out.println(br.readLine());
  13.                     socket.close();
  14.                 } catch (IOException e) {
  15.                     e.printStackTrace();
  16.                 }
  17.             }
  18.         }.start();
  19.     }
  20. }
复制代码

26.19_网络编程(练习)
  • 客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串

26.20_网络编程(练习)
  • 客户端向服务器上传文件

26.21_day26总结
  • 把今天的知识点总结一遍。

30 个回复

倒序浏览
还没学,先了解一下.
回复 使用道具 举报
学以致用
回复 使用道具 举报
很好的学习资源啊
回复 使用道具 举报
非常好,顶顶顶!
回复 使用道具 举报
太好了...
回复 使用道具 举报
本帖最后由 Vincent饭饭 于 2016-2-29 23:17 编辑

我看的视频是毕老师的视频,可能是老版本的。
回复 使用道具 举报
请问正则表达式需要掌握吗
回复 使用道具 举报
点赞,,,,,
回复 使用道具 举报
这是java里面的吗?
回复 使用道具 举报
好深奥啊。
回复 使用道具 举报
内容有些简单了
回复 使用道具 举报
得好好学习了!!
回复 使用道具 举报

加油!!!!
回复 使用道具 举报
未来要学的真多
回复 使用道具 举报
越学越晕了,怎么办
回复 使用道具 举报
你这么棒!你家里人知道么?!
回复 使用道具 举报
生成的jar文件双击无法运行了,命令窗口闪一下没了,该文件打开命令提示符用java -jar  chat.jar运行没有问题。自己在网上找了好多方法均为解决,求帮助!
回复 使用道具 举报
没看这些就来学了,现在头很大,准备再来一遍
回复 使用道具 举报
马上要来学了,现在看看
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马