netty通信框架_王国风云2控制台代码

netty通信框架_王国风云2控制台代码写在前面所属章节链接第二章2.1BIO通信aaaTimeServer代码importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;publicclassTimeServer{ publicstaticvoidmain(String[]args)throwsIOException{ intport=8081; if(args

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

写在前面

用我的双手成就你的梦想。记录Netty权威指南Demo代码并分享出来,帮助读者快速完成Demo。

所属章节 链接
第二章2.1BIO通信 代码链接

TimeServer代码

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class TimeServer {
	public static void main(String[] args) throws IOException {
		int port = 8081;
		if (args != null && args.length > 0) {
			try {
				port = Integer.valueOf(args[0]);
			} catch (NumberFormatException e) {

			}
		}
		ServerSocket server = null;
		try {
			server = new ServerSocket(port);
			System.out.println("The time server is start in port : " + port);
			Socket socket = null;
			while (true) {
				socket = server.accept();
				new Thread(new TimeServerHandler(socket)).start();
			}
		} finally {
			if (server != null) {
				System.out.println("The time server close");
				server.close();
				server = null;
			}
		}
	}
}

TimeServerHandler代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TimeServerHandler implements Runnable {
	
	private  Socket socket;
	
	public TimeServerHandler(Socket socket) {
		this.socket = socket;
	}
	
	public void run() {
		BufferedReader in = null;
		PrintWriter out = null;
		try {
			in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
			out = new PrintWriter(socket.getOutputStream(), true);
			String currentTime = null;
			String body = null;
			while (true) {
				body = in.readLine();
				if (body == null) {
					break;
				}
				System.out.println("The time server receive order : " + body);
				currentTime = "QUERY TIME ORDER".equalsIgnoreCase(body) ? new java.util.Date(System.currentTimeMillis()).toString() : "BAD ORDER";
				out.println(currentTime);
			}
		} catch (Exception e) {
			if (in != null) {
				try {
					in.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
			if (out != null) {
				out.close();
				out = null;
			}
			if (this.socket != null) {
				try {
					this.socket.close();
					
				} catch (Exception e2) {
					e2.printStackTrace();
				}
				this.socket = null;
			}
		}
	}
}

TimeClient代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TimeClient {

	public static void main(String[] args) {
		int port = 8081;
		if (args != null && args.length > 0) {
			try {
				port = Integer.valueOf(args[0]);
			} catch (NumberFormatException e) {
				e.printStackTrace();
			}
		}
		Socket socket = null;
		BufferedReader in = null;
		PrintWriter out = null;
		try {
			socket = new Socket("127.0.0.1", port);
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out = new PrintWriter(socket.getOutputStream(), true);
			out.println("QUERY TIME ORDER");
			System.out.println("Send order 2 server succeed.");
			String resp = in.readLine();
			System.out.println("Now is : " + resp);
		} catch (Exception e) {
			
		} finally {
			if (out != null) {
				out.close();
				out = null;
			}
			
			if (in != null) {
				try {
					in.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
				in = null;
			}
			
			if (socket != null) {
				try {
					socket.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
				socket = null;
			}
		}
	}

}

说明

代码中的package要自行加入,运行结果与书本一致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186848.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • notepad正则删除关键词所在行

    notepad正则删除关键词所在行

    2021年7月19日
    80
  • Ubuntu base install

    Ubuntu base install

    2021年5月5日
    128
  • Turbo码应用

    Turbo码应用

    2021年2月26日
    284
  • LockWorkStation in Windows 9X/ME/NT/2000

    LockWorkStation in Windows 9X/ME/NT/2000LockWorkStationinWindows9X/ME/NT/2000代码作者:Delphiscn(cnBlaster#sohu.com)http://blog.csdn.net/delphiscn程序原码:http://blog.csdn.net/delphiscn/archive/2005/06/25/403157.aspx在线下载:http://de1phiscn.bokee….

    2022年7月21日
    16
  • 大数据云计算和物联网之间的区别和联系_云计算和大数据的区别

    大数据云计算和物联网之间的区别和联系_云计算和大数据的区别一、概念1.云计算“云”指通过计算机池提供资源,也就是说,不是构建一两台机器的问题,而是要构建一定规模的集群,并且对该集群统一管理,形成”资源池“,才能满足云计算业务的需求。简单地说,**云计算就是基于互联网将规模化资源池的计算、存储、平台开发和软件能力提供给用户,实现自动化、低成本、快速提供和灵活伸缩的IT服务。**云计算代表了以虚拟化技术为核心、以低成本为目标的、动态可扩展的…

    2022年10月7日
    5
  • 空间解析几何

    空间解析几何解析几何是用代数方法研究几何对象之间的关系和性质的一门几何学分支 通俗讲就是通过建立坐标系来用方程描述几何图形 在解析几何创立以前 几何与代数是彼此独立的两个分支 而它的出现使形与数统一起来 这是数学发展史上的一次重大突破 在平面解析几何中 除了研究直线的有关性质外 主要是研究圆锥曲线 圆 椭圆 抛物线 双曲线 的有关性质 在空间解析几何中 除了研究平面 直线有关性质外 主要研究柱面 锥

    2025年6月30日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号