软件结构:
c/s
b/s
网络编程:
概述:在一定的协议下,书写代码使得两台计算机在网络下进行通信
网络通信协议:通信协议是对计算机必须遵守的的规则
TCP/IP协议:传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛
TCP协议特点:面向连接,数据安全,传输数据慢 三次握手
UDP协议特点:面向无连接,数据不安全,传输数据快
网络编程三要素
协议: 计算机网络通信必须遵守的规则
IP地址: IP地址用来给一个网络中的计算机设备做唯一的编号
端口号: 端口号就可以唯一标识设备中的进程(应用程序),用两个字节表示的整数,它的取值范围是0-65535,其中,0-1023之间的端口号,已经占用
通信程序:
两端通讯时步骤:
1.服务端程序,需要事先启动,等待客户端的连接
2.客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端
两个类用于实现TCP通信程序:
1.客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信
2.服务端; java.net.ServerSocket 类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。
Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点
构造方法
public Socket(String host, int port):创建套接字对象并将其连接到指定主机上的指定端口号。 如果指定的host是null,则相当于指定地址为回送地址
成员方法
public InputStream getInputStream(): 返回此套接字的输入流
public OutputStream getOutputStream(): 返回 此套接字的输出流
public void close(): 关闭此套接字
public void shutdownOutput(): 禁止此套接字的输出流
ServerSocket 类:这个类双向了服务器套接字,该对象等待通过网络的请求
构造方法
public ServerSocket(int port): 使用该构造方法在创建ServerSocket对象时 就可以将其绑定到一个指定的端口号上,参数port就是端口号
成员方法
public Socket accept(): 侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信
该方法会一直阻塞直到建立连接,如果客户端没有发送请求或者没有和服务器连接成功,那么就会一直阻塞,如果连接成功,就返回Socket对象
客户端:
1.创建一个Socket对象,指定连接的服务器的ip地址以及端口号
2.通过socket对象获取输出流
3.创建一个字节输入流,封装数据源文件
4.使用字节输入流从硬盘中读取文件的数据
5.使用socket对象获取的输出流把这些文件数据写给服务器
6.关闭流,释放资源
服务端:
1.创建一个serversocket对象,指定服务的端口号
2.调用accept()方法,等待连接,如果连接上了就会返回对应的socket对象
3.创建一个字节输出流对象,封装目的地文件
4.使用socket对象获取输入,流读取客户端写过来的数据
5.使用输出流对象,把这些文件数据写到服务器的硬盘中
6.关闭流,释放资源