网络编程是在一定的协议下实现两台计算机通信的程序
软件结构:C/S结构 客户端服务器结构
B/S结构 浏览器服务器结构
网络通信协议:
TCP/IP协议:最广泛的协议,它定义计算机如何进入因特网以及数据如何在他们之间传输
先建立链接,每次链接都经过三次握手
第一次:客户端向服务器发出链接请求等待服务器确认
第二次:服务器向客户端回送一个响应,通知客户端收到链接请求
第三次:客户端再次向服务器发送确认信息,确认链接
UDP:无连接的通信 效率高,容易丢包,传的文件不超过64kb
网络编程三要素(协议 IP地址 端口号)
常用命令
ipconfig 查看本机IP地址信息
ping空格IP地址 检查网络是否链接
常用端口号:
80端口 网络端口
数据库端口号 mysql 3306 oracle 1521
在java中提供了两个类用于实现TCP通信程序
客户端: Socket 创建Socket对象,向服务端打出链接请求,服务端响应之后,两者建立链接
此类实现客户端套接字 套接字:包含端口号和IP地址的网络单位
构造方法:
Socket(String host,int port) 创建一个流套接字并将其连接到指定主机上的指定端口号
参数:
String host 服务器主机的名称/服务器IP地址
int port 服务器端口号
成员方法:
OutputStream getOutputStream() 返回此套接字的输出流
InputStream getInputStream 返回此套接字的输入流
实现步骤
创建一个客户端实现对象Socket 构造方法中绑定服务器的IP地址和端口号
使用Socket对象中的方法getOutputStream() 获取网络对象输出流OutputStream对象
使用网络对象输出流OutputStream对象中的方法write给服务器发送数据
使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
使用网络字节输入流InputStream对象read读取服务器回写的数据
释放资源socket释放
Socket socket = new Socket("192.168.0.111",8888); OutputStream os = socket.getOutputStream(); os.write("你好服务器".getBytes()); InputStream is = socket.getInputStream(); byte[] bytes = new byte[1024]; int len = is.read(bytes); System.out.println(new String(bytes,0,len));
服务端:ServerSocket 创建ServerSocket对象,相当于开启一个服务等待客户端的链接
ServerSocket 此类实现服务器套接字
构造方法
ServerSocket(int port) 创建绑定端口的服务器1套接字
服务器必须明确一件事情必须得知道是那个客户端请求的服务器所以可以使用ServerSocket方法获取请求道的请求客户端对象Socket
成员方法
Socket accept() 倾听并接受到此套接字的链接
服务器实现步骤:
创建服务器ServerSocket对象和系统指定的端口号
使用ServerSocket对象中的方法accept,获取到请求的客户端对象Socket
使用Socket对象中的方法getInputStream()获取网络字节输出流InpurStream对象
使用网络字节输出流InpurStream对象中的方法read读取客户端发送的数据
使用Socket对象中的方法getOutStream()获取网络字节输出流OutputStream对象
使用网络字节输出流OutputStream对象中的方法write给客户端回写数据
释放资源
ServerSocket server = new ServerSocket(8888); Socket socket = server.accept(); InputStream is = socket.getInputStream(); byte[] bytes = new byte[1024]; int len = is.read(bytes); System.out.println(new String(bytes,0,len)); OutputStream os = socket.getOutputStream(); os.write("收到谢谢".getBytes()); socket.close(); server.close();