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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网络爬虫——scrapy入门案例

    网络爬虫——scrapy入门案例一、概述Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.其最初是为了页面抓取(更确切来说,网络抓取)所设计的,后台也应用在获取API所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫.Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider

    2022年6月26日
    29
  • linux的nfs端口111,NFS服务配置固定端口

    linux的nfs端口111,NFS服务配置固定端口#LinuxNFS服务固定端口及防火墙配置#1.在Linux上正常安装NFS服务2.修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)#Localservicesmountd1011/tcp#rpc.mountdmountd1011/udp#rpc.mountdrquotad1012/tcp#rpc.rquotadrquotad1012/udp…

    2022年6月27日
    336
  • UDP协议开发

    UDP协议开发1简介在进行电网插件开发的过程中,对电网接入程序进行了开发,使得在综合安防管理平台上能够非常方便的接入天地维正电网设备。电网数据采用UDP协议,通过监狱局域网,向用户指定的5个IP地址的某端口,同时发送,各IP地址收到的数据相同。因为是第一次使用网络数据报进行开发,因此遇到了许多的坑。在这里把遇到的问题组织成一个文档,重新理解在代码撰写过程中遇到的问题。本文档适用于初次使用UDP进行…

    2022年5月31日
    71
  • nessus安装教程_kali安装nessus

    nessus安装教程_kali安装nessus(Windows安装教程)step1.官网下载对应操作系统安装包https://www.tenable.com/downloads/nessus1.pngstep2.正常双击程序安装等到最后一步finish完成后等会自动跳转出一个注册页面,或者打开浏览器输入https://localh…

    2022年10月10日
    3
  • 关于ip地址 :局域网 广域网 ip 公网 私网 ipv6 ipv4的区别、hosts文件和DNS域名解析说明

    关于ip地址 :局域网 广域网 ip 公网 私网 ipv6 ipv4的区别、hosts文件和DNS域名解析说明1.ip地址说明1.1网络基本知识说明(局域网/广域网/ip地址)场景分析:假如只有一台电脑,那么这台电脑的数据只会全部储存在此电脑的硬盘上,与其它的电脑不会产生任何关系,但是一台电脑干的事情比较少,往往需要多台电脑协同办公提高效率。问题1:多台电脑协同工作势必产生数据交互,如何进行数据交互呢???解决1:可以使用u盘之类的移动存储介质拷贝数据(缺点:需要手动的进行操作、无法做到数据的实时传输)解决2:使用线缆把2台电脑连接起来,通过这根线缆进行传输数据,这根线缆就叫做网线。如下图所示。问

    2022年10月18日
    2
  • pycharm调试教程_pycharm 调试

    pycharm调试教程_pycharm 调试首先设置断点,点击行号显示的一侧,在指定行设置断点。.如果这时我们直接右键run这个代码。他还是会直接运行,不会理会断点所以要右键选择run下面的debug这几个红框的意思依次是:有绿点表示程序运行中,还没有结束Debuger窗口表示现在在debug调试界面。Console表示这是控制台,也就是看打印的界面。右下的箭头是执行下一步(不同pycharm版本可能不同)右上的箭头表示…

    2022年8月28日
    5

发表回复

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

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