当前位置: 首页>>代码示例>>Java>>正文


Java SocketChannel.isConnectionPending方法代码示例

本文整理汇总了Java中java.nio.channels.SocketChannel.isConnectionPending方法的典型用法代码示例。如果您正苦于以下问题:Java SocketChannel.isConnectionPending方法的具体用法?Java SocketChannel.isConnectionPending怎么用?Java SocketChannel.isConnectionPending使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.nio.channels.SocketChannel的用法示例。


在下文中一共展示了SocketChannel.isConnectionPending方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: listen

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
/**
 * * // 采用轮询的方式监听selector上是否有需要处理的事件,如果有,则进行处理 * @throws // IOException
 * @throws Exception
 */
@SuppressWarnings("unchecked")
public void listen() throws Exception { // 轮询访问selector
    while (true) {
        // 选择一组可以进行I/O操作的事件,放在selector中,客户端的该方法不会阻塞,
        // 这里和服务端的方法不一样,查看api注释可以知道,当至少一个通道被选中时,
        // selector的wakeup方法被调用,方法返回,而对于客户端来说,通道一直是被选中的
        selector.select(); // 获得selector中选中的项的迭代器
        Iterator ite = this.selector.selectedKeys().iterator();
        while (ite.hasNext()) {
            SelectionKey key = (SelectionKey) ite.next(); // 删除已选的key,以防重复处理
            ite.remove(); // 连接事件发生
            if (key.isConnectable()) {
                SocketChannel channel = (SocketChannel) key.channel(); // 如果正在连接,则完成连接
                if (channel.isConnectionPending()) {
                    channel.finishConnect();
                } // 设置成非阻塞
                channel.configureBlocking(false);
                // 在这里可以给服务端发送信息哦
                channel.write(ByteBuffer.wrap(new String("hello server!").getBytes()));
                // 在和服务端连接成功之后,为了可以接收到服务端的信息,需要给通道设置读的权限。
                channel.register(this.selector, SelectionKey.OP_READ); // 获得了可读的事件
            } else if (key.isReadable()) {
                read(key);
            }
        }
    }
}
 
开发者ID:laidu,项目名称:java-learn,代码行数:32,代码来源:NioClient.java

示例2: finishConnect

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
private boolean finishConnect(AbstractConnection c, SocketChannel channel)
		throws IOException {
	if (channel.isConnectionPending()) {
		// 阻塞或非阻塞
		channel.finishConnect();

		c.setLocalPort(channel.socket().getLocalPort());
		return true;
	} else {
		return false;
	}
}
 
开发者ID:huang-up,项目名称:mycat-src-1.6.1-RELEASE,代码行数:13,代码来源:NIOConnector.java

示例3: connect

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
public void connect(SelectionKey key) throws IOException {
    SocketChannel channel = (SocketChannel) key.channel();
    // 首先判断是否连接已经建立,如果没有,则调用finishConnect()完成连接
    if (channel.isConnectionPending()) {
        channel.finishConnect();

    }
    channel.configureBlocking(false);
    //建立连接后,向Channel写入数据,并同时注册读事件为感兴趣的事件
    channel.write(ByteBuffer.wrap(new String("hello server!\r\n").getBytes()));
    channel.register(this.selector, SelectionKey.OP_READ);
}
 
开发者ID:zhangboqing,项目名称:multithread,代码行数:13,代码来源:NIOEchoClient.java

示例4: finishConnect

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
private boolean finishConnect(Connection c, SocketChannel channel) throws IOException {
	if (channel.isConnectionPending()) {
		channel.finishConnect();
		c.setLocalPort(channel.socket().getLocalPort());
		return true;
	} else {
		return false;
	}
}
 
开发者ID:variflight,项目名称:feeyo-redisproxy,代码行数:10,代码来源:NIOConnector.java

示例5: finishConnect

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
private boolean finishConnect(AbstractConnection c, SocketChannel channel)
        throws IOException {
    if (channel.isConnectionPending()) {
        channel.finishConnect();

        c.setLocalPort(channel.socket().getLocalPort());
        return true;
    } else {
        return false;
    }
}
 
开发者ID:actiontech,项目名称:dble,代码行数:12,代码来源:NIOConnector.java

示例6: finishConnection

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
/**
 * Attempts to finish a connection
 * @param key
 */
void finishConnection(SelectionKey key)
{
	SocketChannel chan = (SocketChannel) key.channel();
	Session session = socChanMap.get(chan);

	if (chan.isConnectionPending())
	{
		try
		{
			if (session.getConnection().finishConnect())
			{
				session.halfConnected();
				session.login();
			}
			else
			{
				session.connecting();
			}
		}
		catch (IOException e)
		{
			session.markForRemoval();
			key.cancel();
			e.printStackTrace();
		}
	}
}
 
开发者ID:Esri,项目名称:defense-solutions-proofs-of-concept,代码行数:32,代码来源:ConnectionManager.java


注:本文中的java.nio.channels.SocketChannel.isConnectionPending方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。