1. 程式人生 > >傳遞外部資料進入netty併發送出去(2)

傳遞外部資料進入netty併發送出去(2)

思路一相對來說有點複雜,而且總感覺不太安全。

那麼也講一下思路二吧:client.java中有一個方法叫做channelFuture,利用它可以直接獲取到channel,而channel和ctx是一一對應的並且也能夠writeandFlush();那麼我們只要在client內部定義一個private channel,並由構建連線時所用的channelFuture來生成這個channel不也行?然後再自定義一個public方法用於處理外部傳進來的資料不就好了。

做法:其實感覺思路里面就已經把做法講完了。。。還是貼一下程式碼吧

public class client {
    public clientHandler cl
=new clientHandler();//這是方法一的 private Channel channel;//方法二定義的channel public void start(String host,int port) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group) // 註冊執行緒池 .channel(NioSocketChannel.class
) // 使用NioSocketChannel來作為連線用的channel類 .option(ChannelOption.TCP_NODELAY, true) .handler(new ChannelInitializer<SocketChannel>() { // 繫結連線初始化器 @Override protected void initChannel(SocketChannel ch) throws Exception { System.out.println("connected..."
); ch.pipeline().addLast(new ProtobufVarint32LengthFieldPrepender()); ch.pipeline().addLast(new ProtobufEncoder()); ch.pipeline().addLast(cl); } }); ChannelFuture f = b.connect(host, port).sync();//就是使用這兒的channelFuture啦 System.out.println("connected...over"); // 連線完成 channel=f.channel();//賦值完成 f.channel().closeFuture().sync(); // 非同步等待關閉連線channel System.out.println("closed.."); // 關閉完成 } finally { group.shutdownGracefully().sync(); // 釋放執行緒池資源 } } public void sendMessage(Data msg) throws Exception {//自定義的一個方法,只要在外部呼叫該方法就行啦;Data是我自己定義的資料型別不用管 channel.writeAndFlush(msg); } }

剩下的就是在外部的datasend.java內部直接呼叫sendMessge(Data data)就行啦

。。。。。本來以為自己先想到的,結果逛逛百度竟然找到一篇一樣思路的。。。。

相關推薦

傳遞外部資料進入netty併發出去2

思路一相對來說有點複雜,而且總感覺不太安全。那麼也講一下思路二吧:client.java中有一個方法叫做channelFuture,利用它可以直接獲取到channel,而channel和ctx是一一對應的並且也能夠writeandFlush();那麼我們只要在client內部

傳遞外部資料進入netty併發出去1

假設我們是要將datasend.java  內的data  資料通過netty的client.java,clientHandler.java傳遞至伺服器端。本人暫時想到兩種方法來解決該問題。思路1:我們只需要獲取到clientHandler 內部的 ChannelHandle

使用VB6讀取資料庫資源併發郵件原創

Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String

利用EasySQLMAIL實現自動填寫Excel表格並發郵件2

sum 設置 但我 excel 圖片 支付 itl 統計 exc 利用EasySQLMAIL實現自動填寫Excel表格並發送郵件 轉自:http://blog.sina.com.cn/s/blog_1549483b70102witg.html 前一篇博文中記錄了“利用E

資料linux系統部分命令解析20912

1.檢視ip ifconfig 解釋: ifconfig 常用命令關閉網絡卡,檢視ip。請看幫助! NAME ifconfig - configure a network interface SYNOPSIS ifconf

Python資料分析與挖掘學習筆記2使用pandas進行資料匯入

一、匯入pandas模組:   import pandas as pda 二、匯入CSV格式資料: #資料匯入 i=pda.read_csv("E:/hexun.csv")     可對匯入的資料進行統計以及按列排序: #統計 i.describe() #排序 i

java 併發(五)---AbstractQueuedSynchronizer2

         文章部分程式碼和照片來自參考資料   ConditonObject          ConditionObje

資料實時計算Spark學習筆記2—— Spak 叢集搭建

1 Spark 叢集模式 local: spark-shell --master local,預設的 standlone 1.複製 spark 目錄到其他主機 2.配置其他主機的環境變數 3.配置 master 節點的 slaves 檔案 4.啟動 spark

資料結構與演算法之排序2選擇排序 ——in dart

  選擇排序的演算法複雜度與氣泡排序類似,其比較的時間複雜度仍然為O(N2),但減少了交換次數,交換的複雜度為O(N),相對氣泡排序提升很多。演算法的核心思想是每次選出一個最小的,然後與本輪迴圈中的第一個進行比較,如果需要則進行交換。 1 import 'dart:math' show Random

併發注意事項2併發工具優先於wait和notify

自jdk1.5以後java提供了更為高階的併發工具,他們可以完成wait和notify所能完成的工作。 在java.util.conturrent包中更高階的併發工具分成三類:Executor Framework,併發集合(Concurrent Collection)以及同

SilverLight 5 資料繫結的高階話題2

繫結到索引屬性 除了繫結到巢狀屬性以外,也可以繫結到索引屬性,即可以是整數索引也可是字串索引。索引選擇語法與C#類似-簡單地在集合屬性名後附加一個方括號作為索引號。例如,Person物件有一個Address屬性返回了一個Address物件集合,就可以用如下程式碼繫結到第一個

《 常見演算法與資料結構》符號表ST2——初等實現分析和有序符號表

符號表(Symbol Table) (2) 本系列文章主要介紹常用的演算法和資料結構的知識,記錄的是《Algorithms I/II》課程的內容,採用的是“演算法(第4版)”這本紅寶書作為學習教材的,語言是java。這本書的名氣我不用多說吧?豆瓣評分9.

基於R的資料探勘方法與實踐2——關聯規則

關聯規則是從龐大的資料中提取一系列變數或因子間關係,以探索資料的變數或專案間隱含的關係。 1、基本原理 關聯規則通常用支援度、置信度、增益三個指標來分別表示其顯著性、正確性和價值。通過給性最小支援度、最小置信度作為門檻值。若該規則的支援度與置信度大於門檻值,則說明該規則有助

Windows併發&非同步程式設計2原子操作Interlocked

閱讀過《作業系統》一書的人都知道“原子操作”這一概念。在計算機中,原子操作又稱為原語,作業系統保證:“原子操作是不可分割的,在執行完畢之前不會被任何其它任務或事件中斷。”。 原子操作可以是一個步驟,也可以是多個操作步驟,但是其執行期間不會有任何執行緒排程。

python 內建資料結構的基本操作 —— dict2

A mapping object maps hashable values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapp

柯南君:看大資料時代下的IT架構2訊息佇列之RabbitMQ-基礎概念詳細介紹

在實際應用中,可能會發生消費者收到Quque中的訊息,但沒有處理完成就宕機的情況,這種情況下,就可能導致資訊丟失,為了避免這種情況發生,我們可以要求消費者在消費完訊息後傳送一個回執給RabbitMQ,RabbitMQ收到訊息回執(Message acknowledge)後,才將該訊息從Quque中移除。如果R

2015年大二上-資料結構-陣列與廣義表2-4.下三角矩陣的壓縮儲存及基本運算

/* *Copyright (c) 2014,煙臺大學計算機學院 *All rights reserved. *檔名稱:Annpion.cpp *作者:王耀鵬 *完成日期:2015年12月16日 *版本號:v1.0 * *問題描述:下三角矩陣的壓縮儲存及基本運算 *輸入描述

2015年大二上-資料結構-陣列與廣義表2-3.上三角矩陣的壓縮儲存及基本運算

/* *Copyright (c) 2014,煙臺大學計算機學院 *All rights reserved. *檔名稱:Annpion.cpp *作者:王耀鵬 *完成日期:2015年12月16日 *版本號:v1.0 * *問題描述:上三角矩陣的壓縮儲存及基本運算 *輸入描述

python 內建資料結構的基本操作 —— list2

The list data type has some more methods. Here are all of the methods of list objects: list.append(x) Add an item to the end of t

Android開發中自定義表情併發出去之經典的傳送表情

本文例項講述了Android程式設計開發實現輸入(自定義表情包)QQ表情影象併發送出去別人收到並解析出來的方法。分享給大家供大家參考,原來QQ微信等傳送表情其實發送的都不是表情,而是一個富文字,收到訊息後再解析得來的,具體效果如下 : 表情傳送出去是這樣:   最近在