jsocket(1)

public class MySocket extends TcpSocket
{
    public MySocket(SocketHandler h)
    {
        super(h);
        SetLineProtocol();
    }

    public void OnAccept()
    {
        Send("Welcome\r\n");
    }

    public void OnLine(String line)
    {
        Send("You said: " + line + "\r\n");
        if (line.equals("quit"))
        {
            Send("Goodbye!\r\n");
            SetCloseAndDelete();
        }
    }

    public static void main(String[] args)
    {
        //初始化日志,为传入SocketHandler网络处理类作准备
        StdLog log = new StdoutLog();
        
        
        //做的事情就是将log传入到SocketHandler类中,在这个类中要使用StdLog进行日志的记录,还有会初始化一个Selector和存放Socket的Vector。Selector类与SocketHandler关联,因为SocketHandler的主要任务就是处理Selector不同感兴趣的事件,然后由TcpSocket进行详细的处理
        SocketHandler h = new SocketHandler(log);
        
        //首先它会先去初始化MySocket类,MySocket类继承的是TcpSocket类,那么它会去调用TcpSocket的构造方法,TcpSocket的构造方法做的一些事情:
        1,首先TcpSocket的构造方法会先去调用它的父类Socket的构造方法,然后它会先把SocketHandler对象h传递给TcpSocket的父类Socket,父类拥有SocketHandler对象,
        2,因为TcpSocket是用来处理数据的类,所以它在初始化的过程中会申请缓冲区等任务。
        
        接着就是调用ListenSocket类的构造方法,ListenSocket类主要是用来连接和取消的任务的,那么TcpSocket的构造方法做了什么事:
        1,首先会去调用ListenSocket父类Socket构造方法,把SocketHandler对象h传递给ListenSocket的父类Socket
        2,把MySocket对象传入到ListenSocket类中
        ListenSocket l = new ListenSocket(h, new MySocket(h));
        
        //建立连接,建立连接的方法与普通的建立一样
        但是Bind方法做了一步 attach(ssc);//将ServerSocketChannel设置到ListenSocket里面,方便下去取到ServerSocketChannel对象
        if (l.Bind(8000) == 0) // listen on port 8000 监听端口号
        {
            h.Add(l);//如果有新用户连接上来,则进行Add处理
        }
        boolean quit = false;
        while (!quit) // forever
        {
            h.Select(1, 0);//对不同感兴趣的SelectionKey进行处理
        }
    }
}
下面看看源码。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值