Java8——网络编程

本文详细介绍了网络编程的两种主要形式:C/S(客户服务器)结构和B/S(浏览器服务器)结构,对比了它们的安全性和开发复杂度。重点讲解了C/S结构下的TCP和UDP程序开发,包括ServerSocket和Socket类的基本使用,以及如何实现简单的Echo模型。
摘要由CSDN通过智能技术生成

网络编程:

网络编程的2种形式:

  1. C/S结构(客户服务器结构):此类程序要分别写客户端和服务器的代码;开发比较麻烦,要维护两套程序的使用,但是它的安全性比较高,使用自己的协议和接口;
  2. B/S结构(浏览器服务器结构):不再单独开发客户端代码,只开发一套服务器端程序,客户端使用浏览器进行访问;只需要维护一套程序,但是它的安全性不高,因为使用的是公共的HTTP协议和公共的80端口;

主要学习C/S结构(即要开发2套程序)也可以称之为Socket程序,对于C/S程序分为两类:

  1. TCP程序:采用可靠的连接方法进行传输;
  2. UDP程序:采用不可靠的连接方法进行传输;属于数据报程序;

基本实现:

进行网络程序开发最核心的两个类:

  • 服务器类:ServerSocket;主要工作在服务器端,用于接收用户的请求;
  • 客户端:Socket;每一个连接到服务器端的用户,都使用Socket表示;

定义服务器端——主要使用ServerSocket:

  • 构造方法:public ServerSocket(int port) throws IOException;设置监听接口;
  • 接收客户端连接:public Socket accept() throws IOException;
  • 取得客户端输出的功能:public OutputStream getOutputStream() throws IOException;
public class HelloServer {
	public static void main(String args[]) throws Exception {
		// 所有服务器必须有端口
		ServerSocket server = new ServerSocket(999);
		System.out.println("等待客户端连接...");
		// 等待客户端连接
		Socket client = server.accept();
		// OutputStream并不方便内容的输出、所以要利用打印流完成输出;
		PrintStream out = new PrintStream(client.getOutputStream());
		out.print("Hello world!");
		out.close();
		client.close();
		server.close();
	}
}

定义客户端——Socket:

  • 构造方法:public Socket(String host,int port) throws IOException;

       host:表示主机的IP地址,如果使用本机进行访问,那么使用localhost(127.0.0.1)代替IP;

  • 得到输入数据:public InputStream getInputStream() throws IOException;
public class HelloClient {

	public static void main(String[] args) throws IOException {
		// 连接服务器端
		Socket client = new Socket("localhost", 999);
		// 取得客户端输入数据流对象,表示接收服务器端输出的信息
		Scanner scan = new Scanner(client.getInputStream());
		scan.useDelimiter("\n");
		if (scan.hasNext()) {
			System.out.println("[回应数据]" + scan.next());
		}
		scan.close();
		client.close();
	}

}

客户端现在也只是连接一次服务器,并且接收输入数据输出后结束操作;

Echo模型:

本程序的意义:客户端发送数据给服务器端;服务器端接收后前面加一个“ECHO:”标记返回;

本程序的设计如下:

  • 由于需要采用多次输入形式,所以不能在每次连接之后就立刻关闭服务器端;
  • 可以设置一个字符串,如果设置输入了"byebye",那么才表示结束本次的Echo操作;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值