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


Java SocketChannel.isConnected方法代码示例

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


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

示例1: createOrReuseSocket

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
public SocketChannel createOrReuseSocket(InetAddress inetAddress, int port) throws IOException {
	String key = NIOHandler.makeKey(inetAddress, port);
	SocketChannel channel = null;
	keyedSemaphore.enterIOCriticalSection(key);
	try {
		channel = getSocket(key);
		if(channel != null && (!channel.isConnected() || !channel.isOpen())) {
			if(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG))
				logger.logDebug("Channel disconnected " + channel);
			channel = null;
		}
		if(channel == null) { // this is where the threads will race
			SocketAddress sockAddr = new InetSocketAddress(inetAddress, port);
			channel = messageProcessor.blockingConnect((InetSocketAddress) sockAddr, 10000);
			if(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG))
				logger.logDebug("create channel = " + channel + "  " + inetAddress + " " + port);
			if(channel != null && channel.isConnected()) {
				putSocket(NIOHandler.makeKey(inetAddress, port), channel);
				if(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG))
					logger.logDebug("channel cached channel = " + channel);
			}
		} 
		return channel;
	} finally {
		keyedSemaphore.leaveIOCriticalSection(key);
		if(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG))
logger.logDebug("Returning socket " + key + " channel = " + channel);
	}
}
 
开发者ID:YunlongYang,项目名称:LightSIP,代码行数:30,代码来源:NIOHandler.java

示例2: main

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
public static void main(String[] args) throws Exception {
    ServerSocketChannel ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress(0));

    InetAddress lh = InetAddress.getLocalHost();
    final SocketChannel sc = SocketChannel.open();
    final InetSocketAddress isa =
        new InetSocketAddress(lh, ssc.socket().getLocalPort());

    // establish connection in another thread
    Runnable connector =
        new Runnable() {
            public void run() {
                try {
                    sc.connect(isa);
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        };
    Thread thr = new Thread(connector);
    thr.start();

    // wait for connect to be established and for thread to
    // terminate
    do {
        try {
            thr.join();
        } catch (InterruptedException x) { }
    } while (thr.isAlive());

    // check connection is established
    if (!sc.isConnected()) {
        throw new RuntimeException("SocketChannel not connected");
    }

    // close channel - this triggered the bug as it attempted to signal
    // a thread that no longer exists
    sc.close();

    // clean-up
    ssc.accept().close();
    ssc.close();
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:45,代码来源:CloseAfterConnect.java

示例3: moveDataIntoIndividualChannelBuffers

import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
private int moveDataIntoIndividualChannelBuffers()
{
	byte[] dst = {};
	synchronized( buffer )
	{
		if (buffer.position() == 0)
			return 0;

		buffer.flip();
		dst = new byte[buffer.remaining()];
		buffer.get(dst);
		buffer.compact();
	}

	for( SocketChannel chan : connectionBuffers.keySet() )
	{
	  if(!chan.isConnected())
	  {
	    connectionBuffers.remove(chan);
	    continue;
	  }
	  ByteBuffer connectionBuffer = connectionBuffers.get(chan);
		try
		{
			if( connectionBuffer.remaining() > dst.length )
			{
				connectionBuffer.put(dst);
				haveDataInIndividualBuffers = true;
			}
			else
			{
				String remoteClientAddress = chan.toString();
				log.error( "Overflow while trying to write to the output buffer associated with address "+remoteClientAddress+".");
			}
		}catch(BufferOverflowException ex)
		{
			log.error( "Overflow while trying to write to an output buffer.");
		}
	}
	return dst.length;

}
 
开发者ID:Esri,项目名称:defense-solutions-proofs-of-concept,代码行数:43,代码来源:TcpSquirtOutboundTransport.java


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