xml的网站地图织梦制作,软件服务商,精品毛卡卡1卡2卡3麻豆,公司网络组建方案设计IO流和网络编程
IO流
IO流根据流的类型分为两种#xff1a;
一种是输入流#xff0c;另一种是输出流
输入流只能用来读取数据#xff0c;输出流只能用来写入数据。
IO流存在两种操作文件类型#xff1a;
字节流和字符流
字符流只能用于纯文本操作#xff0c;而字节…IO流和网络编程
IO流
IO流根据流的类型分为两种
一种是输入流另一种是输出流
输入流只能用来读取数据输出流只能用来写入数据。
IO流存在两种操作文件类型
字节流和字符流
字符流只能用于纯文本操作而字节流较为全面可以用于视频、文本等操作
字节流一次只能读取一个byte字符流一次可以读取多个byte
字节流
FileOutputStream
FileInputStream 字符流
Reader
Writer
为了满足更多的需求还创建了一种缓冲流如字符缓冲流、字节缓冲流
例
BufferFileOutputStream
BufferFileInputStream
缓冲流的存在是为了能够处理更多的数据在数据与对象传输数据时读取一块空间不断存入数据以便能够一次性处理更多的数据提高程序的效率。
字节流代码示例
//使用字节流进行简单的文件拷贝
public class filethree {public static void main(String[] args) throws IOException {FileInputStream f new FileInputStream(start\\a.txt);FileOutputStream ff new FileOutputStream(start\\c.txt);int aa;while((aaf.read())!-1){ff.write(aa);}ff.close();f.close();}
}//一次性读取多个字节
public class filefive {public static void main(String[] args) throws IOException {long start System.currentTimeMillis();FileInputStream fnew FileInputStream(start\\a.txt);FileOutputStream ffnew FileOutputStream(start\\c.txt);int len;byte[] bytesnew byte[1024*1024*5];while((lenf.read())!-1){ff.write(bytes,0,len);}f.close();ff.close();long endSystem.currentTimeMillis();System.out.println(end-start);}
}字符流代码示例
public class ReadFileExample {public static void main(String[] args) {try (Reader reader new FileReader(example.txt,utf-8)) {char[] buffer new char[1024];int length;while ((length reader.read(buffer)) ! -1) {String str new String(buffer, 0, length);System.out.print(str);}} catch (IOException e) {e.printStackTrace();}}
}public class WriteFileExample {public static void main(String[] args) {String content 这是要写入文件的内容;try (Writer writer new FileWriter(example.txt)) {writer.write(content);} catch (IOException e) {e.printStackTrace();}}
缓冲流代码示例
public static void main(String[] args) throws IOException {BufferedInputStream bisnew BufferedInputStream(new FileInputStream(start\\a.txt));BufferedOutputStream bosnew BufferedOutputStream(new FileOutputStream(start\\c.txt));byte[] bytesnew byte[2];int len;while((lenbis.read())!-1){bos.write(bytes,0,len);}bos.close();bis.close();}
}
网络编程
网络编程就是计算机和计算机之间通过网络进行数据传输
网络编程的三要素 IP端口号协议 每一台电脑都有着独属于自己的IP地址
IP地址和端口号是计算机网络中的重要概念它们用于在网络上唯一标识一个通信实体或进程。
IP地址是指互联网协议地址它是由32位二进制数表示的通常使用点分十进制数表示。IP地址的作用是用来标识网络上的设备类似于电话号码可以用来进行网络通信。在通信过程中源设备通过IP地址找到目的设备然后发送数据。
端口号则是指在一个设备中运行的应用程序的标识符它是一个16位的整数0~65535。每个端口号都对应着一个特定的应用程序例如HTTP应用使用80端口FTP应用使用21端口等。在通信过程中源设备通过端口号找到目的设备上的特定应用程序然后将数据传送给它。
IP地址和端口号的组合可以唯一地标识一个通信实体或进程因此在进行网络通信时需要同时指定通信双方的IP地址和端口号。
当用户在浏览器中输入域名时浏览器会向DNS服务器发送请求以获取对应的IP地址。因此域名与IP地址是一一对应的关系。从技术上来说一个域名可以对应多个IP地址这是为了实现负载均衡和故障转移等目的但通常情况下一个域名只对应一个IP地址。
而端口号则用于标识设备中运行的具体应用程序。同一个设备上运行的不同应用程序会使用不同的端口号进行区分。在进行网络通信时源设备通过IP地址和端口号找到目标设备上特定的应用程序然后将数据传送给它。
协议
TCP和UDP
在服务器之间进行数据传送时TCP的速度慢于UDP但是UDP在传输过程中不会管理数据会导致传输完成后有大量包丢失而TCP虽然速度稍慢与UDP但是其具有高安全性丢失的数据少目前使用的范围更广
TCPTransmission Control Protocol传输控制协议是一种面向连接的、可靠的传输层协议。它在互联网上广泛应用于数据传输中例如 HTTP、FTP 等应用层协议都是基于 TCP 协议工作的。
TCP 协议的主要特点包括
面向连接在进行数据通信前需要先通过三次握手建立连接连接成功后才能进行数据传输。可靠性TCP 提供可靠的数据传输这是通过利用确认、重传等机制来实现的。拥塞控制TCP 通过拥塞窗口、慢启动以及拥塞避免等机制来有效地控制网络拥塞。流量控制TCP 通过滑动窗口机制来实现流量控制保证数据接收方不会被发送方的数据淹没。
TCP 协议的通信过程分为三个阶段建立连接、数据传输和断开连接。建立连接时客户端向服务端发送 SYN 报文服务端收到后回复一个 SYNACK 报文客户端再向服务端发送一个 ACK 报文这个过程就是三次握手。之后就可以进行数据传输数据传输完毕后双方可以通过四次挥手的方式来断开连接。
常见的TCP协议
HTTPHypertext Transfer Protocol超文本传输协议用于在客户端和服务器之间传输超文本、图片、音频、视频等各种类型的数据。HTTPSHypertext Transfer Protocol Secure安全的超文本传输协议是基于 SSL/TLS 加密传输的 HTTP 协议可以保证在网络传输过程中的数据安全。FTPFile Transfer Protocol文件传输协议用于在网络上进行文件传输。SMTPSimple Mail Transfer Protocol简单邮件传输协议用于发送电子邮件。POP3Post Office Protocol version 3邮局协议第3版用于接收电子邮件。IMAPInternet Message Access ProtocolInternet消息访问协议也是用于接收电子邮件的协议相比 POP3 具有更多的功能。DNSDomain Name System域名系统将域名解析成 IP 地址。Telnet用于远程登录到其他计算机。
除此之外实验室的学长进行了服务器创建教学教会了我们如何手敲一个简单的服务器
服务器发送端代码
public class Net2 {public static void main(String[] args) throws IOException {DatagramSocket dsnew DatagramSocket();Scanner scnew Scanner(System.in);while (true) {System.out.println(请输入要说的话);String strsc.nextLine();if(886.equals(str)){break;}byte[] bytesstr.getBytes();InetAddress addressInetAddress.getByName(127.0.0.1);int port10086;DatagramPacket dpnew DatagramPacket(bytes,bytes.length,address,port);ds.send(dp);}}
}
服务器接收端代码
public class MyNet2 {public static void main(String[] args) throws IOException {DatagramSocket dsnew DatagramSocket(10086);byte[] bytesnew byte[1024];DatagramPacket dpnew DatagramPacket(bytes,bytes.length);while (true) {ds.receive(dp);byte[] datadp.getData();int lendp.getLength();String ipdp.getAddress().getHostAddress();String namedp.getAddress().getHostName();System.out.println(ipnamenew String(data,0,len));}}
}