网络编程(基础案例+速览复习)

101 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

@[TOC]

网络编程实例

导读

Java中怎样实现网络编程:通过java.net包中 ServerSocket 和Socket这个两个核心类

java中如何实现网络编程 ServerSocket 和 Socket这两个核心类

  • 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。
  • 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字
  • 上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口
  • 作用:完成两个应用程序之间的数据传输

实现简易聊天(通过案例学习网络编程)

(阅览这篇博客需要具备io流的基础操作知识,不过能力强的话,看注释也是可以的)

服务端 模拟代码

package 网络编程.Li.homework;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * @Description:实现简易聊天的作业--服务端 
 * @auther:Li Ya Hui
 * @Time:2021年4月18日下午3:14:24
 */
public class Server {
	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(999);
		System.out.println("服务端已开启,请开始向服务端聊天吧");
		//开启监听事件,允许客户端连接
		Socket serverSocket = server.accept();
		//向用户展示  连接成功
		System.out.println("连接成功");
		
		//初始化输出对象
		OutputStream outputStream = null;
		PrintStream out = null;
		InputStream inputStream = null;
		InputStreamReader inputStreamReader = null;
		BufferedReader reader = null;
		
		while(true) 
		{
			//接受客户端的数据
			//1.获取输入流
			inputStream = serverSocket.getInputStream();
			//2.将输入流转换为输入流读取对象
			inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
			//3.将输入流对象转换为缓存读取对象
			reader = new BufferedReader(inputStreamReader);
			//4.读取内容
			String getinfo = reader.readLine();
			//判断用户端输出退出
			if ("no".equals(getinfo))
			{
				System.out.println("程序退出!");
				System.exit(0);
			}
			//打印用户传来的数据
			System.out.println("获取到从客户端传递来的数据:"+getinfo);
			
			//发送  服务端将消息发送给客户端
			System.out.println("服务端请输入:");
			Scanner input = new Scanner(System.in);
			String sendinfo = input.next();
			
			//判断服务端输出退出
			if ("no".equals(getinfo))
			{
				System.out.println("程序退出!");
				System.exit(0);
			}
			//开辟输出流
			outputStream = serverSocket.getOutputStream();
			//输出流对象
			out = new PrintStream(outputStream, true, "utf-8");
			out.println(sendinfo);//传输
		}
	}
}

客户端 模拟代码

package 网络编程.Li.homework;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 * 
 * @Description:实现简易聊天的作业--客户端
 * @auther:Li Ya Hui
 * @Time:2021年4月18日下午3:43:11
 */
public class Client {
	public static void main(String[] args) throws UnknownHostException, IOException {
		//开启服务端 接口
		Socket Socket = new Socket("localhost",999);
		//创建扫描器
		Scanner input = new Scanner(System.in);
		//初始化输入输出流对象
		OutputStream outputStream = null;
		PrintStream out = null;
		InputStream inputStream = null;
		InputStreamReader inputStreamReader = null;
		BufferedReader reader = null;
		while (true) {
			//发送:客户端向服务端发送数据
			System.out.println("客户端请输入:");
			String sendinfo = input.nextLine();
			//获取输出流
			outputStream = Socket.getOutputStream();//获取输出流
			//获取一个输出对象
			out = new PrintStream(outputStream,true,"utf-8");
			out.println(sendinfo);//传输
			if ("no".equals(sendinfo)) 
			{
				System.out.println("程序退出!");
				System.exit(0);
			}
			//2.接受:从客户端接受服务端传递来的信息
			//获取输入流
			inputStream = Socket.getInputStream();
			//将输入流转换为输入流读取对象
			inputStreamReader = new InputStreamReader(inputStream,"utf-8");
			//将输入流读取对象转换为缓存读取对象
			reader = new BufferedReader(inputStreamReader);
			String getInfo = reader.readLine();
			System.out.println("获取到从服务端传递来的数据:"+getInfo);
		}
	}
}

网络编程——注意事项:

网络编程小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vi9xDz9N-1618737903636)(C:\Users\l\AppData\Roaming\Typora\typora-user-images\image-20210418171733488.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFJDLlxd-1618737694554)(C:\Users\l\AppData\Roaming\Typora\typora-user-images\image-20210418171830098.png)]