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 ...
随机推荐
- 东大OJ-快速排序
1236: Simple Sort 时间限制: 1 Sec 内存限制: 128 MB 提交: 195 解决: 53 [提交][状态][讨论版] 题目描述 You are given n ...
- MAC OS上Nginx安装
admin@admindeMac:local]$ brew install nginx ==> Installing dependencies for nginx: pcre, openssl ...
- Java开发利器Myeclipse全面详解
Java开发利器Myeclipse全面详解: Ctrl+1:修改代码错误 Alt+Shift+S:Source命令 Ctrl+7:单行注释 Ctrl+Shift+/ :多行注释 Ctrl+I :缩进( ...
- 解决 samba不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
net use * /del /y http://www.cnblogs.com/senior-engineer/p/4528378.html
- jsp内置对象作业1-用户登录
题目:编写一个jsp程序,实现用户登录,当用户输入的用户名或密码错误时,将页面重定向到错误提示也,并在该页面显示30秒后,自动返回到用户登录页面. 1.用户登录页面 <%@ page langu ...
- 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...
- nodeJS+express+Jade写一个局域网聊天应用(node基础)
为了复习一下nodeJS, 而且socketIO这东西听起来就好高端有木有, 而且有人写过了open, 也可以作为自己的参考有木有, 点击下载源代码: express是4.x的版本, 跟以前的配置有些 ...
- Mysql-windows下修改密码
忘记密码修改(以下各种方法视情况而使用,本人测试,有些都是案情况才可行,但都是有设置成功过) 注:修改密码成功后一定要记得刷新下权限(否则将导致不能使用当前用户连接) mysql>FLUSH P ...
- GridView多表关联
有些时候,需要多表关联查询,使用SqlDataProvider比较灵活 Controller中 use yii\data\SqlDataProvider; $dataProvider = new Sq ...
- redis事务
当一个client在连接中发出multi命令时,这个连接就进入一个事务的上下文,该连接后续的命令不会执行,而是存放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令.如果其中执 ...