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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忆梦追风 中级黑马   /  2014-9-4 23:01  /  1129 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一.IP地址
每个设备在网络中的唯一标识
每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
ipconfig:查看本机IP
ping:测试连接
本地回路地址: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
二.端口号
每个程序在设备上的唯一标识
每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。
端口号范围从0-65535
编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。
常用端口
mysql: 3306
oracle: 1521
web: 80
tomcat: 8080
QQ: 4000
feiQ: 2425
三.网络协议
为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
UDP
面向无连接,数据不安全,速度快。不区分客户端与服务端。
TCP
  面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据
四.Socket
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO流传输。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。
五.UDP传输
1.发送
创建DatagramSocket, 随机端口号
创建DatagramPacket, 指定数据, 长度, 地址, 端口
使用DatagramSocket发送DatagramPacket
关闭DatagramSocket
2.接收
创建DatagramSocket, 指定端口号
创建DatagramPacket, 指定数组, 长度
使用DatagramSocket接收DatagramPacket
关闭DatagramSocket
从DatagramPacket中获取数据
3.接收方获取ip和端口号
String ip = packet.getAddress().getHostAddress();
int port = packet.getPort();
六.TCP传输
1.客户端
  创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
  调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
  输入流可以读取服务端输出流写出的数据
  输出流可以写出数据到服务端的输入流
2.服务端
  创建ServerSocket(需要指定端口号)
  调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
  调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
  输入流可以读取客户端输出流写出的数据
  输出流可以写出数据到客户端的输入流
一.TCP
1.客户端
  创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
  调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
  输入流可以读取服务端输出流写出的数据
  输出流可以写出数据到服务端的输入流
2.服务端
  创建ServerSocket(需要指定端口号)
  调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
  调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
  输入流可以读取客户端输出流写出的数据
  输出流可以写出数据到客户端的输入流
二.反射
1.Class
  .class文件加载到内存中就是一个Class对象
  获取Class对象的方式有3种:
  Scanner sc = new Scanner("xxx.txt");
   Class.forName(sc.nextLine());
   类名.class
   对象.getClass()
2.Constructor
  Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数, 就不能这样创建了
  可以调用Class类的getConstructor(String.class,int.class)方法获取一个指定的构造函数
  然后再调用Constructor类的newInstance("张三",20)方法创建对象
3.Field
  Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取
  通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible(true)设置访问权限
  用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值
4.Method
  Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法
  调用invoke(Object, Object...)可以调用该方法
  Class.getMethod("eat") invoke(obj) Class.getMethod("eat",int.class) invoke(obj,10)

评分

参与人数 1黑马币 +10 收起 理由
迦南 + 10 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马