socketfactory.java

来自「用java开发的一些实用的短信通信模块其中包含MD5加密、http发送等信息」· Java 代码 · 共 80 行

JAVA
80
字号
package lib.commons.net;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;

import lib.commons.config.DomConfig;

public class SocketFactory implements ProtocolSocketFactory {
	public Socket createSocket(String address, int port, int connectionTimeout,
			int readTimeout) throws IOException, UnknownHostException,
			ConnectTimeoutException {
		if (connectionTimeout < 1 && readTimeout < 1)
			return createSocket(address, port);
		else {
			HttpConnectionParams params = new HttpConnectionParams();
			if (connectionTimeout > 0)
				params.setConnectionTimeout(connectionTimeout);
			if (readTimeout > 0)
				params.setSoTimeout(readTimeout);
			return createSocket(address, port, null, 0, params);
		}
	}

	public Socket createSocket(String arg0, int arg1) throws IOException,
			UnknownHostException {
		return createSocket(arg0, arg1, null, 0);
	}

	public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3)
			throws IOException, UnknownHostException {
		return createSocket(arg0, arg1, arg2, arg3, null);
	}

	public Socket createSocket(String arg0, int arg1, InetAddress arg2,
			int arg3, HttpConnectionParams arg4) throws IOException,
			UnknownHostException, ConnectTimeoutException {
		Socket socket = new Socket();
		//if (null != arg2) {
		//	socket.bind(new InetSocketAddress(arg2, arg3));
		//}
		SocketAddress endpoint = new InetSocketAddress(arg0, arg1);
		if (null != arg4 && arg4.getConnectionTimeout() > 0)
			socket.connect(endpoint, arg4.getConnectionTimeout());
		else
			socket.connect(endpoint);
		if (null != arg4)
			setSocketParams(socket, arg4);
		return socket;
	}

	public SocketFactory createInstance(DomConfig domConfig) throws Exception {
		return new SocketFactory();
	}

	public static void setSocketParams(Socket socket,
			HttpConnectionParams params) throws SocketException {
		
		if (null != socket && null != params) {
			//socket.setSoLinger(params.getLinger() > 0, params.getLinger());
			//if (params.getSendBufferSize() > 0)
			//	socket.setSendBufferSize(params.getSendBufferSize());
			//if (params.getReceiveBufferSize() > 0)
			//	socket.setReceiveBufferSize(params.getSendBufferSize());
			if (params.getSoTimeout()>0)
				socket.setSoTimeout(params.getSoTimeout());
			//socket.setTcpNoDelay(params.getTcpNoDelay());
		}
		
	}
}

⌨️ 快捷键说明

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