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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我想吃鲜锅兔儿 初级黑马   /  2019-1-10 09:10  /  732 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网络编程
C/S:客户端和服务器结构
B/S:浏览器和服务器结构

网络通信协议
UDP协议:用户数据协议  消耗资源小,通信效率高
TCP协议:传输控制协议  文件无差错传输

IP地址
小黑窗口ipconfig查看IP地址
本地IP地址 127.0.0.1  localhost

端口号
80端口 网络端口
数据库  mysql:3306  orcle:1521
Tomcat服务器:8080
===============================
============================
TCP通讯程序
面向连接的通信客户端和服务器必须经过三次握手,建立逻辑连接,才能通信(安全)

Socket类 (客户端)

构造方法
public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。
参数:String host:服务器主机的名称/服务器的IP地址
          int port:服务器的端口号

成员方法
1.public InputStream getInputStream() : 返回此套接字的输入流。
2.public OutputStream getOutputStream() : 返回此套接字的输出流。
3.public void close() :关闭此套接字。
4.public void shutdownOutput() : 禁用此套接字的输出流。  

实现步骤:
1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
2.使用Socket对象中的方法getOutputStream()获取网络字节输出OutputStream对象
3.使用网络字符输出流OutputStream对象中的方法write,给服务器发送数据
4.使用Socket对象中的方法 getInputStream()获取网络字节输入流getInputStream对象
5.使用网络字节输入流getInputStream对象中的方法read,读取服务器回写的数据
6.释放资源(Socket)

注意:
1.客户端和服务器端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象
2.当我们创建客户端对象 Socket的时候,就会去请求服务器和服务器经过3次握手建立间接通路

ServerSocket  (服务器)

构造方法
public ServerSocket(int port) :使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指 定的端口号上,参数port就是端口号。

服务器要明确是哪个客户端请求的服务器
用accept方法获取到请求的客户端对象()Socket
成员方法
Server accept(int port) ,创建绑定到特定端口的服务器套接字

服务器实现步骤:
1.创建服务器ServerSocket对象和系统要指定的端口号
2.使用ServerSocket对象中的方法accept方法获取请求的客户端对象Socket
3.使用Socket对象中的方法getInputStream(),获取网络字节输入流getInputStream对象
4.使用网络字节输入流getInputStream对象中的方法read();读取客户端发送的数据
5.使用Socket对象中的方法getOutputStream()获取网络字节输出Ou tputStream对象
6.使用网络字节输出OutputStream对象中的方法write(),给客户端回写数据
7.释放资源(Socket,ServerSocket)



函数式接口:接口中只有一个抽象方法

@FunctionalInterface注解
可以检测接口是否是一个函数式接口

函数式接口作为方法参数,三种使用方式:
1.调用方法,传递接口实现类对象2.使用匿名内部类3.使用Lambda表达式
==============================
==============================
常用函数式接口

1.Supplier<>接口 (生产一个数据)  有返回

抽象方法
get();
用来获取一个泛型参数指定的对象数据,需要Lambda表达式提供一个符合泛型类型的对象数据
================================
2.Consumer<>接口 (消费一个数据)  无返回

抽象方法
accept();消费一个指定泛型的数据
默认方法
andThen();将两个或多个数据组合在一起再消费
===============================
3.Predicate<>接口  (布尔值)
对某种类型数据进行判断 得到一个布尔值

抽象方法
test();用于判断

默认方法
and();并且
or();或者
negate();取反
===============================
4.Function<T,R>接口
用来根据一个类型的数据得到另一个类型的数据

抽象方法
apply(T R);
将T类型转换为R类型

默认方法
andThen();
用来进行组合操作

0 个回复

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