JavaSE - Day22 (网络编程 Socket)

名词

互联网: 点对点连接

万维网: WWW.

物联网:

        ip : 计算机在网络中的地址

        端口: 软件在计算机中的地址

        协议: 计算机 与 计算机交流的规则

iP

概念:

        计算机在互联网中的地址

分类:

        IPV4:

                取值: 0~ 255 , 0~255 , 0~255 , 0~255

                注意: 0 , 1 , 255 有特殊意义,不要使用

        IPV6:

        查看自己电脑上的ip地址:

                利用dos 命令,ipconfig 查看

        Java中ip类对应的类InetAddress

                getLocalHost(); 获取本机地址

                getByName(); 通过指定ip 或 设备名查找计算机地址

                getAllByName() ; 获取指定ip 设备名 ,网址对应的所有的地址

                getHostAddress() ; 获取调用该方法对象的ip 地址

                getHostName() ; 获取调用该方法的对象中的设备名称

特殊地址:

         127.0.0.1 属于本机地址

端口

取值:   0~65535

注意: 

        一般 0~ 2048被系统占用

常用端口: 8080 3306 80   8000

协议

OSI七层模型

        应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

TCP

面向有连接

特点:

        三次握手 ,四次挥手

        三次握手:

                封装对方所在地址

                判断是否连接成功

                沟通

        四次挥手:

                封装结束

                连接完成

                沟通结束

                断开

        编程:

                服务器: 

                        创建服务器Socket

                        等待客户端连接

                        获取客户端在服务端的映射

                        通过客户端的映射 获取输入流 与 输出流

                        .........

                客户端:

                        创建客户端Socket

                        连接服务器

                        获取客户端的输入 或者 输出流

                        ......

UDP

面向无连接

特点: 

        每次传输数据的一部分,不会考虑对方是否接收的到

编程:

        接收端:

                创建一个接收端的Socket

                准备一个数据包,用来接收数据

                接收数据

                获取数据包中的数据

                获取数据包中数据的长度

                打印输出

                关闭资源

        发送端:

                创建一个发送端的Socket

                准备要发送的数据

                准备发送的数据包

                发送数据

                关闭资源

TCP

2,客户端上传一个文件给服务器,服务器回馈收到了
    服务器
        1,创建服务器Socket
        2,等待客户端连接,获取客户端映射
        3,获取客户端映射的输入流与输出流
        4,使用输入流获取客户端上传的文件
        5,创建一个文件输出流,将客户端上传的文件存储到指定位置
        6,使用输出流返回收到了
        7,冲刷
        8,关流
        9,关闭socket与服务器socket
    客户端
        1,创建客户端的Socket
        2,获取客户端的输出流与输入流
        3,创建一个文件输入流,读取文件
        4,使用输出流输出要上传的文件
        5,冲刷
        6,使用输入流获取服务器返回的信息
        7,关流
        8,关闭客户端Socket

public class Client {
	public static void main(String[] args) throws IOException {
		Socket socket = new Socket("127.0.0.1", 9889);
		FileInputStream fis = new FileInputStream("D:\\桌面\\美女.jpg");
		OutputStream outputStream = socket.getOutputStream();
		InputStream inputStream = socket.getInputStream();
		byte[] b = new byte[1024];
		int len = 0;
		while ((len = fis.read(b)) != -1) {
			outputStream.write(b , 0 , len);
			outputStream.flush();
		}
		int read = inputStream.read(b);
		String string = new String(b , 0 , read);
		System.out.println(string);
		outputStream.close();
		inputStream.close();
		socket.close();
	}
}
public class Server {
	public static void main(String[] args) throws IOException {
		ServerSocket serverSocket = new ServerSocket(9889);
		Socket socket = serverSocket.accept();
		
		InputStream is = socket.getInputStream();
		OutputStream os2 = socket.getOutputStream();
		FileOutputStream os = new FileOutputStream("D:\\美女.jpg");
		byte[] b = new byte[1024];
		int len = 0;
		while ((len = is.read(b)) != -1) {
			os.write(b , 0 ,len);
			os.flush();
			if (len != 1024) {
				break;
			}
		}
		System.out.println("文上传文件已经写出~");
		os2.write("服务器已经完成".getBytes());
		os2.flush();
		os2.close();
		System.out.println("wan");
		socket.close();
	}
}

3,让客户端与服务器无限制聊天
4,群聊(思考)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值