目录
-
软件结构:
-
C/S
-
B/S
-
-
网络编程三要素:
-
协议:通信的规则
-
TCP
-
特点
-
-
UDP
-
特点
-
-
-
ip地址:唯一标识每一台计算机
-
IPv4
-
4个字节
-
-
IPv6
-
16个字节
-
-
-
端口号:唯一标识计算机中的每一个进程
-
门牌号
-
常用端口:
-
网络端口:80,不写也会默认添加
-
数据库端口:
-
mysql:3306
-
oracle:1521
-
-
Tomcat服务器:8080
-
-
-
-
TCP通信程序:
-
服务器与客户端需要建立一个连接,这个连接是一个IO对象,这个对象是一个字节流对象,因为要传输的数据不可能仅仅是字符,还有其他类型的数据
-
服务器没有自己的IO流,服务器使用accept方法获取客户端的socket对象,而socket对象中包含着客户端的IO流对象,用这种方法也可以实现服务器和多个客户端设备进行通讯
-
Socket类:
-
其中包括了ip地址、端口号和流对象
-
当创建socket类时,客户端就会去请求服务器并和服务器经过3次握手建立连接通路
-
成员方法:
-
public InputStream getInputStream() : 返回此套接字的输入流。
-
使用此输入流读取服务器发来的数据
-
-
public OutputStream getOutputStream() : 返回此套接字的输出流。
-
使用此输出流向服务器发送数据
-
-
-
代码:
-
Socket socket = new Socket("127.0.0.1", 8888);
-
OutputStream os = socket.getOutputStream();
-
os.write("Hello Server!!!".getBytes());
-
socket.close();
-
-
-
ServerSocket类
-
构造方法:
-
端口号可以随便写
-
-
-
通信过程注意事项:
-
要先启动服务器端
-
先启动客户端的话会报错
-
-
最后一定要把能关闭的流全部关闭
-
socket.shutdownOutput()
-
作用:
-
在客户端的输出流中写入一个结束标志
-
-
原理:
-
客户端向服务器端发送数据时,在while循环中,当读取到结束标志时就会跳出while循环,而没有把最后的结束标志发送出去,服务器端没有接受到结束标志就会一直等待,造成两端无法正常结束
-
-
-
-
通信过程优化:
-
文件命名:
-
根据系统时间确定文件名字
-
-
循环接收:
-
多线程提高效率:
-
要使用try...catch处理异常,因为run方法是没有像上层抛出异常的
-
-
消息回写:
-
-
InputStreamReader类:
-
是字节流到字符流的桥梁,可以将字节流转化字符流
-
方法:
-
InputStreamReader( InputStream in ) 返回一个Reader的子类对象
-
-
-