Netty(二):简单的客户端服务端demo

使用Java IO实现客户端服务端

服务端监听端口

客户端连接服务端

客户端循环写数据到服务端

import java.io.IOException;
import java.net.Socket;

/**
 * @author ko
 */
public class Client {
    private static final String HOST = "127.0.0.1";
    private static final int PORT = 8000;
    private static final int SLEEP_TIME = 5000;

    public static void main(String[] args) throws IOException {
        final Socket socket = new Socket(HOST, PORT);

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("客户端启动成功!");
                while (true) {
                    try {
                        String message = "hello world";
                        System.out.println("客户端发送数据: " + message);
                        socket.getOutputStream().write(message.getBytes());
                    } catch (Exception e) {
                        System.out.println("写数据出错!");
                    }
                    sleep();
                }

            }
        }).start();

    }

    private static void sleep() {
        try {
            Thread.sleep(SLEEP_TIME);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ClientHandler {

    public static final int MAX_DATA_LEN = 1024;
    private final Socket socket;

    public ClientHandler(Socket socket) {
        this.socket = socket;
    }

    public void start() {
        System.out.println("新客户端接入");
        new Thread(new Runnable() {
            @Override
            public void run() {
                doStart();
            }
        }).start();
    }

    private void doStart() {
        try {
            InputStream inputStream = socket.getInputStream();
            while (true) {
                byte[] data = new byte[MAX_DATA_LEN];
                int len;
                while ((len = inputStream.read(data)) != -1) {
                    String message = new String(data, 0, len);
                    System.out.println("客户端传来消息: " + message);
                    socket.getOutputStream().write(data);
                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    private ServerSocket serverSocket;

    public Server(int port) {
        try {
            this.serverSocket = new ServerSocket(port);
            System.out.println("服务端启动成功,端口:" + port);
        } catch (IOException exception) {
            System.out.println("服务端启动失败");
        }
    }

    public void start() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                doStart();
            }
        }).start();
    }

    private void doStart() {
        while (true) {
            try {
                Socket client = serverSocket.accept();
                new ClientHandler(client).start();
            } catch (IOException e) {
                System.out.println("服务端异常");
            }
        }
    }
}
/**
 * @author ko
 */
public class ServerBoot {

    private static final int PORT = 8000;

    public static void main(String[] args) {
        Server server = new Server(PORT);
        server.start();
    }

}

原文地址:https://www.cnblogs.com/shamo89/p/9637764.html

时间: 2024-11-09 10:30:49

Netty(二):简单的客户端服务端demo的相关文章

Netty实例-简单的服务端-客户端实现,注释详细

       书籍推荐:                                       实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503 Netty Server端实现 /** * * <p> * Netty Server Simple * </p> * * @author 卓轩 * @创建时间:2014年7月7日 * @version: V1.0 */ public class NettyServer

Netty实例-简单的服务端-client实现,凝视具体

       书籍推荐:                                       实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503 w=unionnojs&f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DNwfw%252Fe17lVwjmraEDZVrLn4D8gsQRSnlTCbL1Om%252BR1KLltG5xFicOdXrTUTgh9

netty websocket 简单消息推送demo

今天心情很不好!!! 原因保密. 这篇是基于"netty与websocket通信demo". 错误想法:大量客户请求,共用一个worker,来实现推送. 正确作法:应该是对Channel对应的ChannelGroup进行操作,来实现推送. 一个Channel可以划分到多个ChannelGroup中. PushServerChannelHandler和DynMessage这两个类最重要,其实类基本没变. package org.sl.demo.chatserver; import jav

简单实现客户端服务端互联通信

/*服务端程序*/#include <stdio.h>#include <stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include <string.h>#include <string.h>#include <arpa/inet.h>#include <netinet/in.h>#include <arpa/inet.h>#includ

netty实现客户端服务端心跳重连

使用netty实现客户端服务端心跳重连 前言: 公司的加密机调度系统一直使用的是http请求调度的方式去调度,但是会出现网络故障导致某个客户端或者服务端断线的情况,导致很多请求信息以及回执信息丢失的情况,接着我们抛弃了http的方式,改为Tcp的方式去建立客户端和服务器之间的连接,并且要去实现断线重连的功能,经过讨论后决定使用java中成熟的nio框架 – netty去解决这一系列的问题. 1.       netty简单介绍: 在百度中对netty的解释是: Netty是由JBOSS提供的一个

实用的两个移动端demo

今天看了两个挺好的移动端demo,记录一下 一.文本截取 实现的样式是这样的,如下图: 看上去是有些丑陋,简要说明一下,实现功能是文字显示两行,超出部分截掉,用三个点代替,后面还有一个更多的图标(只是用了>代替啦--),你可以把他想象一张很完美的效果图-- 首先说一下思路,实现方法比较巧妙,主要使用伪元素after和before的content: attr(attribute-name) 1.前面用:bofore控制前面的文字,最后一行文字使用:after控制 2.使用felx-box的-web

Unity手游之路&lt;二&gt;Java版服务端使用protostuff简化protobuf开发

http://blog.csdn.net/janeky/article/details/17151465 开发一款网络游戏,首先要考虑的是客户端服务端之间用何种编码格式进行通信.之前我们介绍了Unity游戏前端使用protobuf的方法.今天我们来谈谈服务端如何使protobuf.游戏服务端语言百花齐放,除了比较传统的c/c++外,Java,Erlang,Python都有很多团队在使用. 今天推荐一下Java作为服务端开发语言.国内很多出色的页游和手游都是采用Java作为服务端语言的.比如<神曲

一个简单的Webservice的demo,简单模拟服务

前段时间一直在学习WCF,匆匆忙忙的把<WCF全面解析>和<WCF服务编程>看了一遍,好多东西都不是很懂,又听了一下WCF分布式开发的网络教程,算是马马虎虎的明白点了.回顾了一下Webservice,将二者进行比较学习.考虑到以后的发展,当时决定学习WCF,希望自己在不久的将来能将WCF学的稍微精通点吧.这几天又将Webservice看了一遍,回想当时学习Webservice处处碰到坑,由于没人指点,连最基本地点发布都折腾好长时间,只能一点一点的填坑跳坑.这几天闲了,想写一个简单的

一个简单的webservice的demo(下)winform异步调用webservice

绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单的Webservice的demo(中)_前端页面调用 当winform同步调用服务时,由于调用服务不能像C/S那样快,winform的UI进程一直在等待服务的返回结果,就无法响应用户事件.为了解决这种问题,我们用异步调用. 首先,先准备一个模拟用的webservice,如下: 1 using Sys