⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connector.java

📁 短信发送
💻 JAVA
字号:
/**
 * Created at Nov 22, 2008
 */
package com.jdev.net.connector;

import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import com.jdev.net.event.Notifier;
import com.jdev.net.queue.Request;
import com.jdev.util.Debug;

/**
 * <p>Title: Connector</p>
 * <p>Description: </p>
 * @author Lawrence
 * @version 
 */
public class Connector implements Runnable {

	private final static String module = Connector.class.getName();
	private final Selector selector;
	private final SocketChannel sc;
	private static Notifier notifier = Notifier.getNotifier();

	/**
	 * @param selector
	 * @param sc
	 */
	public Connector(Selector selector, SocketChannel sc) {
		this.selector = selector;
		this.sc = sc;

	}

	/* (non-Javadoc)
	 * @see java.lang.Runnable#run()
	 */
	public void run() {
		try{
//			sc.connect(SockAddr.getSockAddr().getAddress()); //绑定socketAddress
//			Debug.logVerbose("connecting to server:" + SockAddr.getSockAddr().getUrl() + ":" + SockAddr.getSockAddr().getPort(),module);
//			Thread.sleep(1000);
			if(sc.isConnectionPending()){
				sc.finishConnect();
				notifier.fireOnConnected();
				Debug.logVerbose("-->connected the server", module);
			}
			sc.configureBlocking(false);

			// 触发接受连接事件
			Request request = new Request(sc);

			// 注册读操作,以进行下一步的读操作
			SelectionKey sk = sc.register(selector, 0);
			sk.interestOps(SelectionKey.OP_WRITE );
			selector.wakeup();
			sk.attach(new TcpHelper(sk,sc));
			
		}catch(Exception e){
			close();
			Debug.logError(e, module);
		}
	}
	public void close() {
		if (sc != null) {
			try {
				SelectionKey key = sc.keyFor(selector);
				key.cancel();
				sc.close();
			} catch (Exception ignored) {
			}
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -