首页 > 其他分享 >Netty-TCP 04.发消息

Netty-TCP 04.发消息

时间:2023-06-30 20:13:17浏览次数:42  
标签:Netty 04 bootstrap public exit new 发消息 服务端 客户端

本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【4】部分,主要测试客户端和服务端的通讯。

服务端

下面是服务端测试代码:

/**
 * @author michong
 */
public class TCPServer {

    public static void main(String[] args) {
        TCPServerBootstrap bootstrap = new TCPServerBootstrap("localhost", 8081);
        bootstrap.start();
    }
}

客户端

下面是客户端测试代码:

/**
 * @author michong
 */
public class TCPClient {

    public static void main(String[] args) throws InterruptedException {
        TCPClientBootstrap bootstrap = new TCPClientBootstrap("localhost", 8081);
        Channel channel = bootstrap.start();

        System.out.println("请在控制台中输入需要发送的内容(输入exit退出程序)");
        Scanner scanner = new Scanner(System.in);
        while (true) {
            String text = scanner.nextLine();
            if ("exit".equalsIgnoreCase(text)) {
                break;
            }
            channel.writeAndFlush(new Packet(Pkt.TEXT, text.getBytes()));
        }
        scanner.close();
        bootstrap.stop();
    }
}

发消息

  1. 先启动服务端
  2. 在启动客户端
  3. 在客户端的控制台输入需要发送的内容,输入exit则退出客户端

收发日志:

  • 服务端:
服务端启动成功 => host=localhost, port=8081
收到消息:类型=1,内容=hello world
收到消息:类型=1,内容=收到
  • 客户端:
客户端启动成功 => host=localhost, port=8081
请在控制台中输入需要发送的内容(输入exit退出程序)
hello world
收到消息:类型=1,内容=OK.
收到
收到消息:类型=1,内容=OK.
exit

标签:Netty,04,bootstrap,public,exit,new,发消息,服务端,客户端
From: https://www.cnblogs.com/michong2022/p/17517722.html

相关文章

  • 光脚丫学LINQ(041):使用对象关系设计器修改映射关系
    演示视频:http://u.115.com/file/f2b86d8eab演示重点此演示视频主要介绍了如何使用VS提供的【对象关系设计器】这个工具来建立实体类之间的关系。虽然此工具可以自动根据数据表之间的关系来建立起对象模型中实体类与实体类之间的关系。然而,默认情况下,它所建立的关系貌似都是清一色的......
  • System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Person'.
    @@abpMicrosoft.Data.SqlClient.SqlException(0x80131904):Invalidobjectname 请求接口报错:System.Data.SqlClient.SqlException(0x80131904):Invalidobjectname'Person'.无效的名称:Person数据库没有这个表,或者这个字段处理;检查数据库是否有改表或该字段......
  • 1204. 最后一个能进入电梯的人
    1204.最后一个能进入电梯的人SQL架构表:Queue+-------------+---------+|ColumnName|Type|+-------------+---------+|person_id|int||person_name|varchar||weight|int||turn|int|+-------------+---------+p......
  • Nginx 报错 504 Gateway Time-out 和无法上传大于1M文件的解决方法
    Nginx报错504GatewayTime-out的解决方法修改nginx.conf配置文件。keepalive_timeout600;fastcgi_connect_timeout600;fastcgi_send_timeout600;fastcgi_read_timeout600;proxy_connect_timeout600;proxy_send_timeout600;proxy_read_timeou......
  • 1045. 买下所有产品的客户
    1045.买下所有产品的客户SQL架构Customer 表:+-------------+---------+|ColumnName|Type|+-------------+---------+|customer_id|int||product_key|int|+-------------+---------+product_key是Customer表的外键。Product 表:+-----......
  • Netty——5、源码分析
    1、启动剖析我们来看看netty中对下面的代码是怎样处理的。publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{//1netty中使用NioEventLoop(简称nioboss线程)来封装线程和selectorSelectorselector=Selector.o......
  • ubuntu 18.04.1安装mysql8
    sudoaptupdatesudoaptinstallmysql-serversudosystemctlstatusmysqlsudomysqlALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'password';FLUSHPRIVILEGES;createuser'testuser'@......
  • 解决minio使用nginx代理出现问题(上传文件可以,创建桶404)
    minio使用nginx代理出现问题(上传文件可以,创建桶失败)server{listen80;#error_page500502503504404/404.html;注释掉location/{proxy_set_headerX-Forwarded-Proto$scheme;proxy_set_headerX-Real-IP$remote_addr;......
  • [Telerik]RadDocking第04篇 设置面板的停靠状态IsPinned
    一、演示概述此演示展示了设置每个RadPane的IsPinned属性来控制面板是否被钉住,或者缩小到隐藏区域。所谓钉住面板,其实就是将面板固定住,而不是自动缩放到隐藏区域。通过将RadPane.IsPinned设置为True可以将面板固定住,设置为false则不固定面板,将其防止在停靠区域。相关下载(屏幕......
  • [MEF]第04篇 MEF的多部件导入(ImportMany)和目录服务
    一、演示概述此演示介绍了MEF如何使用ImportMany特性同时导入多个与相同约束相匹配的导出部件,并且介绍了目录服务(Catalog),该服务告知MEF框架可以在什么地方去搜寻与指定约束匹配的导出部件,即导出部件位于什么地方。相关下载(屏幕录像、代码):http://yunpan.cn/cVdN5JHeQrJgI ......