1
package comgzxhnet;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class NetDemo {
/**
* @throws IOException
* @throws UnknownHostException
* @conent:
* 网络编程:
* ip地址:唯一标识一台计算机
* port端口:计算机中应用的窗口号,应用都是通过端口号来区分。
* 0-65535,1024之前的被系统已分配
*
* 127.0.0.7:会送地址
* 链路层(物理网口)> 网络层(给数据分组发送到网络) > 传输层(TCP通讯,UDP通信)> 应用层(HTTP,FTP)
* TCP通信:面向链接,三次握手,先连接,再进行数据传输,安全可靠的传输。
* 严格区分客户端和服务器,服务器等待客户端链接,不能主动向客户端发起链接。
* 客户端Client:Socket
* 服务器Server:ServerSocket
* 1.Socket类:该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。
* 该类实现客户端套接字。
* step1:实例化,host目标ip地址,port端口号。建立链接
*/
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO 自动生成的方法存根
// 1.建立链接
Socket soc = new Socket(“127.0.0.1”,36012);
//2.获取Socket的字节输入流
InputStream is = soc.getInputStream();
int data;
while((data = is.read()) != -1){
System.out.print((char)data);
}
//3.释放资源
soc.close();
is.close();
}
}
2
package comgzxhnet;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* @throws IOException
* @contrnt
* 服务器ServerSocket:这个类实现了服务器套接字。
* Client:(英文)客户端 Server:(英文)服务器
* step1:实例化,port一定要与客端port一致
* step2:监听accept()
* step3:监听拿到Socket,对Socket进行输入/输出操作
* step4:释放资源
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
ServerSocket ss = new ServerSocket(36012);
Socket sk = ss.accept(); //监听谁对服务器进行了链接
OutputStream os = sk.getOutputStream();
String str = "Hello Client 你好!";
os.write(str.getBytes()); //getBytes():转换成字节数组
InputStream in = sk.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
int len;
while((len = isr.read())!= -1 ){
System.out.println((char)len);
}
ss.close();
sk.close();
os.close();
}
}
3
package comgzxhIOdemo;
import java.io.FileInputStream;
import java.io.IOException;
public class IODemo {
/**
* @content:
* IO:Input(输入),Output(输出)
* 流:不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为“流”。
* IO流:输入输出操作
* 输入流:Input
* 输出流:Output
* 以程序(加载内存)作为参照:
* 输入:设备-->程序
* 输出:设备-->设备
* 传输数据不同分为:
* 字节传输:图片,视频,音乐等...以二进制存储的文件
* 字符传输:传输文字性内容
* 字节输入:
*InputStream:抽象类是表示输入字节流的所有类的超类
* 实现子类:FileInputStream从文件系统中的文件获取输入字节
* 1.创建字节输入流
* 2.读取字节:read()
* 3.close:释放资源
*
* 字节输出:
* OutputStream:FileOutputStream
* # \转义 \n
*
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
// 1.创建字节输入流
FileInputStream fis = new FileInputStream(“D:\JavaTool\hello.txt”);
int data;
// 2.读取字节
//data = fis.read(); //h
while((data = fis.read()) != -1){ //hello
// println换行打印;print不换行打印
System.out.print((char)data);
}
// 3.关闭:释放资源,在最后
fis.close();
}
}
4
package comgzxhIOdemo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputDemo {
/**
* @param args
* * 字节输出流:
* OutputStream:抽象类是表示字节输出流的所有类的超类
* 实现子类:FileOutputStream
* 文件输出流是用于将数据写入到输出流File或一个FileDescriptor.
* 1.创建输出流:实例化
* 2.准备写入的数据:字节数组
* 3.向输出流写入数据
* 4.释放资源
*
* input:输入--> read():读取 :FilelnputStream
* output:输出--> write():写入:FileOutputStream
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
//1.实例化
FileOutputStream fos = new FileOutputStream("C:\\Users\\25830\\Documents\\javaioshiyan\\lll.txt");
//2.准备写入的数据:字节数组
byte[] b = {65,66,67,'s'};
//3.向输出流写入数据
fos.write(b);
System.out.println("写入操作完毕!");
//4.释放资源
fos.close();
}
}
5package gzxhRWDemo.java;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ReaderDemo {
/**
* @throws IOException
* @content
* 字符流:Reader和Writer
* Reader:用于读取字符流的抽象类.
* InputStreamReader:是从字节流到字符流的桥:它读取字节,
* 并使用指定的charset将其解码为字符 。
* 实现类:FileReader阅读字符文件
*/
public static void main(String[] args) throws IOException{
// TODO 自动生成的方法存根
//1.实例化
FileReader fr = new FileReader("C:\\Users\\25830\\Documents\\javaioshiyan\\ooo.txt");
int data;
while ((data = fr.read()) != -1){
System.out.print((char)data);
}
fr.close();
}
}
6
package gzxhRWDemo.java;
import java.io.FileWriter;
import java.io.IOException;
public class WriterDemo {
/**
* @content
* Writer:用于写入字符流的抽象类
* OutputStreamWriter:字符流到字节的桥梁
* FileWriter:写字符文件
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
//1.实例化
FileWriter fw = new FileWriter("C:\\Users\\25830\\Documents\\javaioshiyan\\lll.txt");
//2.给文件写入内容
fw.write("吃饭了!");
fw.close();
}
}