Netty 伺服器客戶端,傳送自定義訊息
Netty 5 的包
伺服器,四個Java檔案
1 SubReqServer.java
- package com.test.netty;
- import io.netty.bootstrap.ServerBootstrap;
- import io.netty.channel.ChannelFuture;
- import io.netty.channel.ChannelInitializer;
-
import io.netty.channel.ChannelOption;
- import io.netty.channel.EventLoopGroup;
- import io.netty.channel.nio.NioEventLoopGroup;
- import io.netty.channel.socket.SocketChannel;
- import io.netty.channel.socket.nio.NioServerSocketChannel;
- import io.netty.handler.codec.serialization.ClassResolvers;
-
import io.netty.handler.codec.serialization.ObjectDecoder;
- import io.netty.handler.codec.serialization.ObjectEncoder;
- import io.netty.handler.logging.LogLevel;
- import io.netty.handler.logging.LoggingHandler;
- publicclass SubReqServer {
- publicvoid bind(int nPort) throws Exception {
-
EventLoopGroup bossGroup = new NioEventLoopGroup();
- EventLoopGroup workerGroup = new NioEventLoopGroup();
- try{
- ServerBootstrap b = new ServerBootstrap();
- b.group(bossGroup, workerGroup)
- .channel(NioServerSocketChannel.class)
- .option(ChannelOption.SO_BACKLOG, 100)
- .handler(new LoggingHandler(LogLevel.INFO))
- .childHandler(new ChannelInitializer<SocketChannel>(){
- @Override
- publicvoid initChannel(SocketChannel ch) throws Exception{
- ch.pipeline()
- .addLast(
- new ObjectDecoder(1024*1024,
- ClassResolvers.weakCachingConcurrentResolver(this.getClass().getClassLoader())))
- .addLast(new ObjectEncoder())
- .addLast(new SubReqServerHandler());
- }
- });
- ChannelFuture f = b.bind(nPort).sync();
- System.out.println("---------------wait for connect");
- f.channel().closeFuture().sync();
- }finally {
- System.out.println("---------------wait for connect Error!");
- bossGroup.shutdownGracefully();
- workerGroup.shutdownGracefully();
- }
- }
- publicstaticvoid main(String[] args){
- int nPort = 5656;
- nPort = Integer.valueOf(nPort);
- System.out.println("---------------Main start");
- try {
- new SubReqServer().bind(nPort);
- } catch (Exception e) {
- System.out.println("---------------Main Error");
- e.printStackTrace();
- }
- }
- }
2 SubReqServerHandler.java
- package com.test.netty;
- import io.netty.channel.ChannelHandlerAdapter;
- import io.netty.channel.ChannelHandlerContext;
- publicclass SubReqServerHandler extends ChannelHandlerAdapter{
- @Override
- publicvoid channelActive(ChannelHandlerContext ctx){
- System.out.println("--------------------------------handler channelActive------------");
- // for(int i = 0; i<10; i++){
- // SubscribeReq req = new SubscribeReq();
- // req.setAddress("深圳JJYY");
- // req.setPhoneNumber("13888886666");
- // req.setProductName("Netty Book");
- // req.setSubReqID(i);
- // req.setUserName("XXYY");
- // ctx.write(req);
- // }
- // ctx.flush();
- }
- @Override
- publicvoid channelRead(ChannelHandlerContext ctx, Object msg)
- throws Exception{
- // SubscribeReq reqx = new SubscribeReq();
- // reqx.setAddress("*****深圳蛇口");
- // reqx.setPhoneNumber("13888886666");
- // reqx.setProductName("Netty Book");
- // reqx.setSubReqID(6666);
- // reqx.setUserName("XXYY");
- // ctx.write(reqx);
- // ctx.flush();
- //
- SubscribeResp resp = new SubscribeResp();
- resp.setnSubReqID(555);
- resp.setRespCode(0);
- resp.setDesc("-------Netty book order succeed, 3days later, sent to the designated address");
- ctx.writeAndFlush(resp); // 反饋訊息
- //ctx.write(resp);
- //ctx.flush();
- SubscribeReq req = (SubscribeReq)msg; // 訂購內容
- if("XXYY".equalsIgnoreCase(req.getUserName())){
- System.out.println("接收到的資料: [ " + req.toString() + " ]");
- }
- }
- @Override
- publicvoid exceptionCaught(ChannelHandlerContext ctx, Throwable cause){
-
System.out.println("---------------exceptionCaught 網路異常,關閉網路"
相關推薦
Netty 伺服器客戶端,傳送自定義訊息
Netty 5 的包 伺服器,四個Java檔案 1 SubReqServer.java [java] view plain copy print? package com.t
MFC中傳送自定義訊息機制,PostMessage和SendMessage方式
MFC中有種訊息佇列,使用PostMessage()或者SendMessage()給窗體傳送自定義訊息,當窗體接收到訊息時呼叫該訊息對應繫結的方法。 PostMessage:把訊息投放到執行緒的訊息佇列,不等訊息被處理就立即返回;Send
Python TCP伺服器/客戶端+UDP傳送端/接收端
''' socketserver ''' import time import socket import socketserver class RequestHandler(socketserver.StreamRequestHandler): def handle(self):
ROS---傳送自定義訊息,接收訊息
上一篇已經建好了hello包及其內部的檔案,本篇講訊息 接收訊息 hello_node.cpp 作一些修改 #include "iostream" #include "../include/hello/add.h" #include "ros/ros.h
Pythpn整合itchat定時傳送自定義訊息到微信群
完整程式碼如下: import itchat import time from apscheduler.schedulers.blocking import BlockingScheduler # 登陸,enableCmdQR 值為true 或 負數 為負數的原因有的手機無法識別二維碼,
kafka傳送自定義訊息體(物件、陣列)
在前面簡單搭建了Windows上的kafka環境,並使用命令列測試可以執行之後(環境請參考:http://blog.csdn.net/u014104286/article/details/75040932)我們會考慮怎麼使用kafka;先試著傳送一個簡單的訊息,傳送成功之後
Netty開發redis客戶端,Netty傳送redis命令,netty解析redis訊息
Netty開發redis客戶端,Netty傳送redis命令,netty解析redis訊息, netty redis ,redis RESP協議。redis客戶端,netty redis協議 我們可以使用redis-cli這個客戶端來操作redis,也可以使用window的命令列telnet連線redis。
客戶端POST傳送json資料給服務端,客戶端端接收伺服器端json資料響應
public static void jsonRequest() throws IOException, URISyntaxException { //請求的地址 String url = "http://localhost:8080/springmvc/response/r
從客戶端的鍵盤錄入字元,如aaa. 伺服器端接收aaa,並在控制檯上列印aaa.然後將其轉換為大寫AAA返回到客戶端, 由客戶端列印到客戶端控制檯上
伺服器端: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net
Socket通訊 一個伺服器對多個客戶端,不能延遲接受資訊的實現
實驗要求: 1.一個時間點,無論哪個基站有資料傳送,伺服器必須同時接收。不能延遲等待這個客戶端接收完畢再接收另一個客戶端; 2.客戶端不能關閉,一直連線,以防資料遺漏 知識點: 多執行緒 同時開啟多個任務,不用按照程式的執行順序來; 基本的程式碼如下: pack
嵌入式Linux網路程式設計,I/O多路複用,epoll()示例,epoll()客戶端,epoll()伺服器,單鏈表
文章目錄 1,I/O多路複用 epoll()示例 1.1,epoll()---net.h 1.2,epoll()---client.c 1.3,epoll()---sever.c 1.4,epoll()---linklist.h
嵌入式Linux網路程式設計,I/O多路複用,poll()示例,poll()客戶端,poll()伺服器,單鏈表
文章目錄 1,IO複用poll()示例 1.1,poll()---net.h 1.2,poll()---client.c 1.3,poll()---sever.c 1.4,poll()---linklist.h 1.5,p
嵌入式Linux網路程式設計,I/O多路複用,select()示例,select()客戶端,select()伺服器,單鏈表
文章目錄 1,IO複用select()示例 1.1 select()---net.h 1.2 select()---client.c 1.3 select()---sever.c 1.4 select()---linklist.h
frp多客戶端,實現一臺雲伺服器連線多個區域網內的主機,多埠轉發
很簡單,用不同的frps.ini就行 假設你原來已經啟動了一個frps.ini,現在想再加一個。 那就新建一個frps1.ini,然後埠和之前的不一樣就行。 假設之前有一個7000的埠了,那現在這個用7001就可以啦~ cp frps.ini frps1.ini 如
java做伺服器,android做客戶端,實現資料傳輸
許久未動筆,有個小專案開始動工。 需要用一臺windows電腦做伺服器,在android端與其進行資料交換,實現一些業務。 簡單起見,用java寫這個伺服器,以前沒做過,試試水。很簡單的程式碼,純粹找思路。 伺服器端程式碼: package com.test; impor
如何在WebService接收一個XML檔案並解析,客戶端如何傳送這個XML檔案?急求簡單程式碼示例。。
客戶端 xmlHttp = null; if (window.XMLHttpRequest) { // If IE7, Mozilla, Safari, and so on: Use native object. xmlHtt
Netty資料傳輸-客戶端,queue-client
【一個小程式設計師的成長日記】在公司接了一個任務,完成一個專案資料同步模組。要求是不能操作專案的資料庫。所以想到的方案是使用log4jdbc記錄資料來源的SQL語句或者儲存過程到日誌檔案。然後按行讀取日誌檔案中的資料,記錄讀取的點,以便下次繼續讀取。讀取的資料進入Big Queue佇列(一個大型、快速且持久的
cocos creator專案實戰全套(客戶端,伺服器,資料庫)視訊教程
問題諮詢 為了避免由於網頁溝通的不及時所引起的誤會,特提供客服QQ:1927832684 普通學員交流群:572270243 有問題及時反饋,避免發生不必要的誤會! 課程簡介課程特色:專案為主,一切跟著專案走,拒絕高大上,拒絕瞎比比,腳踏實地,實踐為主! 課程內容:
由於這臺計算機沒有終端伺服器客戶端訪問許可證,遠端會話被中斷。請與伺服器管理員聯絡 解決
今天用xp機器連線遠端的win2003伺服器是提示"由於這臺計算機沒有終端伺服器客戶端訪問許可證,遠端會話被中斷。請與伺服器管理員聯絡" 在網上找了一下,發現一下解決方案: 1.在伺服器上將終端伺服器授權模式從“每裝置”更改為“每使用者”。 2.在客戶端上,導航到下列登錄檔子
遠端桌面連線 及"由於這臺計算機沒有終端伺服器客戶端訪問許可證,遠端會話被中斷"
原因:終端伺服器中的終端伺服器授權模式可能設定為“每裝置”,而許可證伺服器可能僅有“每使用者 CAL”。如果是這種情況,那麼許可證伺服器將僅頒發臨時許可證,這是不能升級的。當臨時許可證還有幾天即將過期時,“事件 ID 26,源:應用程式彈出訊息”將顯示在客戶端上的應用程式事件日誌中。該事件訊息指出臨時許可證還