netty socket 客服端编程
- package com.ming.netty.nio;
 - 2
 - 3 import io.netty.bootstrap.Bootstrap;
 - 4 import io.netty.channel.ChannelFuture;
 - 5 import io.netty.channel.ChannelInitializer;
 - 6 import io.netty.channel.ChannelOption;
 - 7 import io.netty.channel.EventLoopGroup;
 - 8 import io.netty.channel.nio.NioEventLoopGroup;
 - 9 import io.netty.channel.socket.SocketChannel;
 - 10 import io.netty.channel.socket.nio.NioSocketChannel;
 - 11
 - 12 /**
 - 13 * netty 客户端模拟
 - 14 * @author mingge
 - 15 *
 - 16 */
 - 17 public class TimeClient {
 - 18
 - 19
 - 20 public static void main(String[] args) throws Exception{
 - 21 new TimeClient().connect("127.0.0.1", 8400);
 - 22 }
 - 23
 - 24 public void connect(String addr,int port) throws Exception{
 - 25 EventLoopGroup group=new NioEventLoopGroup();
 - 26 try {
 - 27 Bootstrap b=new Bootstrap();
 - 28 b.group(group).channel(NioSocketChannel.class)
 - 29 .option(ChannelOption.TCP_NODELAY, true)
 - 30 .handler(new ChannelInitializer<SocketChannel>() {
 - 31 public void initChannel(SocketChannel ch) throws Exception{
 - 32 ch.pipeline().addLast(new TimeClientHandler());
 - 33 }
 - 34 });
 - 35 ChannelFuture f=b.connect(addr,port);
 - 36 f.channel().closeFuture().sync();//等待客户端关闭连接
 - 37 } catch (Exception e) {
 - 38 // TODO: handle exception
 - 39 }finally{
 - 40 group.shutdownGracefully();
 - 41 }
 - 42 }
 - 43 }
 


- 1 package com.ming.netty.nio;
 - 2
 - 3 import io.netty.buffer.ByteBuf;
 - 4 import io.netty.buffer.Unpooled;
 - 5 import io.netty.channel.ChannelHandlerAdapter;
 - 6 import io.netty.channel.ChannelHandlerContext;
 - 7
 - 8 public class TimeClientHandler extends ChannelHandlerAdapter {
 - 9
 - 10 private final ByteBuf byteMsg;
 - 11
 - 12 public TimeClientHandler() {
 - 13 byte[] req="我是请求数据哦".getBytes();
 - 14 byteMsg=Unpooled.buffer(req.length);
 - 15 byteMsg.writeBytes(req);
 - 16 }
 - 17
 - 18 @Override
 - 19 public void channelActive(ChannelHandlerContext ctx) throws Exception {
 - 20 ctx.writeAndFlush(byteMsg);
 - 21 }
 - 22
 - 23 @Override
 - 24 public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
 - 25 ByteBuf buf=(ByteBuf)msg;
 - 26 byte[] req=new byte[buf.readableBytes()];
 - 27 buf.readBytes(req);
 - 28 String body=new String(req,"GBK");
 - 29 System.out.println("body:"+body);
 - 30 }
 - 31
 - 32 @Override
 - 33 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
 - 34 //释放资源
 - 35 ctx.close();
 - 36 }
 - 37
 - 38
 - 39 }
 
netty socket 客服端编程的更多相关文章
- python socket 客服端服务端编程
		
客服端编程 import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error a ...
 - Python网络编程UDP服务器与客服端简单例子
		
[转载] https://blog.csdn.net/hu330459076/article/details/7868028 UDP服务器代码: #!/usr/bin/env python # -*- ...
 - 编程模仿MySql客服端
		
写在前面 通过自己编写的Java代码程序,去模仿实现MySql客服端的简单功能,最终以控制台操作,很像在Dos窗口通过命令操作MySql数据库. 关键问题 在编写过程中遇到的一些小问题和一些值得留心注 ...
 - android客服端+eps8266+单片机+路由器之远程控制系统
		
用android客服端+eps8266+单片机+路由器做了一个远程控制的系统,因为自己是在实验室里,所以把实验室的门,灯做成了远程控制的. 控制距离有多远------只能说很远很远,只要你手机能上网的 ...
 - TCP服务器端和客服端(一)
		
就是一个客服端(Socket)和服务器(ServerSocket)端的链接间.我的理解是一个服务端可以链接多个客服端. 在客服端有输入流outPutStream. 用于发送数据 在服务器端有输出流.i ...
 - Live555 分析(三):客服端
		
live555的客服端流程:建立任务计划对象--建立环境对象--处理用户输入的参数(RTSP地址)--创建RTSPClient实例--发出DESCRIBE--发出SETUP--发出PLAY--进入Lo ...
 - python服务器端、客户端的模型,客服端发送请求,服务端进行响应(web.py)
		
服务器端.客户端的模型,客服端发送的请求,服务端的响应 相当于启动了一个web server install web.py 接口框架用到的包 http://webpy.org/tutorial3.zh ...
 - 利用java在服务器和客服端建立连接,进行通讯(代码实例)
		
客服端代码:有注释 package javanet; import java.io.IOException; import java.io.InputStream; import java.io.Ou ...
 - 客服端JavaScript线程模型
		
JavaScript语言核心并不包含任何线程机制,并且客服端JavaScript传统上没有定义任何线程机制.HTML5定义了一种作为后台线程的“WebWorker",但是客服端JavaScr ...
 
随机推荐
- Stem函数绘图
			
stem(n,x,'filled');第三个参数是绘图的样式,filled就是填充,将圆圈填充. Stem函数绘图各种不同的绘图函数分别适用于不同的场合,使用“stem”绘制针状图最简单,从附录中提供 ...
 - 【瞎想】TDD与汉字;FDD与英语字母
			
我觉得TDD与汉字;FDD与英语字母他们之间有相似性. FDD的上行和下行用频率的不同来区分,TDD的上行和下行用相同的频率然后在同一时刻相差半个波长(对称频率).如果用维度数描述,FDD是1维的话, ...
 - Nginx配置文件详细说明
			
在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data; #启动进程,通常设置成和cpu的数量相等worker_process ...
 - Android 二维码 生成和识别(转)
			
原博客地址 :http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 还有几个写的也可以参考一下:http://www.itnos ...
 - 【BZOJ 4598】【SDOI 2016 Round2 Day1 T3】模式字符串
			
2016-05-21因为BZOJ上“ 数据文件太过巨大,仅提供前三组数据测试.”所以我考场上写的60分的点分治交上去也A了. 我的这个点分治的时间复杂度是$O(Tnmlogn)$的,听题解时没听懂$O ...
 - 【BZOJ 2157】旅游
			
再水一道模板题,明天就要出发去参加二轮省选了赶紧复习复习模板. 链剖模板题,可是写链剖太麻烦了,还是写lct吧. 但这个lct比较麻烦了,因为边权有正有负,要统计最大值和最小值,这样点权赋为什么值都会 ...
 - git初体验(六)git配置
			
一.基本配置 看这篇Git 基本配置其实就解决很多问题了. 二.客户端配置 1.git bash 粘贴与编辑 在git bash客户端头部右键,现在属性,然后把"快速编辑模式勾选即可&quo ...
 - OneThink学习笔记01
			
OneThink1.0开发手册: http://document.onethink.cn/manual_1_0.html 简介 OneThink是一个开源的内容管理框架,基于最新的ThinkPHP3 ...
 - 算法与数据结构之选择排序(C语言)
			
#include<stdio.h> #include<stdlib.h> void SelectSort(int *a,int n);//预声明要调用的函数 int main( ...
 - Cell右滑的动作状态
			
//允许cell可以进行编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)index ...