1.前一天重点内容复习
UDP协议和TCP协议区别:
是否是一种可靠连接
UDP协议:不可靠,执行效率高
TCP协议:可靠,执行效率低
是否需要建立连接通道
UDP协议:不需要
TCP协议:需要
是否发送的数据大小有限制
UDP协议:有限制,以一种 "数据报包-->DatagramPacket"的方式传输
TCP协议:没有限制,连接通道里面,使用字节流的方式来进行通信(数据写,读)
客户端通过获取通道的字节输出流来写数据
服务端通过获取通道的字节输入流来读数据
字符缓冲流读写复制特有方式代码体现
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new FileReader("br.txt")) ;
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt")) ;
String line = null ;
while((line=br.readLine())!=null){
bw.write(line) ;
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
UDP协议发送端实现步骤
创建发送端的Socket对象
创建一个"数据报包"对象
public DatagramPacket(byte[] buf(发送端数据),int length (发送的长度),InetAddress address( ip地址对象),int port(端口号))
使用UDP发送端的Socket对发送"数据报包"
释放资源
UDP协议接受端实现步骤
创建接收端的Socket对象
创建一个自定义缓冲字节数组作为数据报包的参数 ,创建接受端的数据报包
使用接受端的数据报包去接受发送端的数据
通过getData()、getLength()、getAddress解析真实数据(数据报包)
展示数据
释放资源
2.TCP协议实现发送和接受
客户端实现发送
创建客户端socket对象
public Socket(String host , int port) throws UnKnownHostException,IOException:创建流套接字并将其连接到指定ip地址的指定端口号
获取客户端Socket对象通道内的字节输出流对象
public OutputStream getOutputStream() throws IOException
将数据写入字节输出流中
释放资源
服务器端实现接受
创建服务端的Socket对象
public ServerSocket(int port) throws IOException:创建绑定到指定端口的服务器套接字
监听客户端连接通道
public Socket accept() throws IOException:
获取通道内字节输入流
public InputStream getInputStream() throws IOException
读取通道内字节输入流的数据
public InetAddress getInetAddress():获取套接字所连接的地址
public String getHostAddress():将地址转为字符串形式
展示数据
释放资源
3.TCP建立连接通道,客户端如何告诉服务端没有数据再传输了
public void shutdownOutput() throws IOException:告诉服务端,没有更多数据写过去,数据传入完毕