天天看點

socket bind java_Java Socket.bind方法代碼示例

import org.apache.tomcat.jni.Socket; //導入方法依賴的package包/類

private long createAprSocket(int port, long pool)

throws Exception {

long serverSock = 0;

String address = InetAddress.getByName("localhost").getHostAddress();

// Create the APR address that will be bound

int family = Socket.APR_INET;

if (Library.APR_HAVE_IPV6) {

if (!OS.IS_BSD && !OS.IS_WIN32 && !OS.IS_WIN64)

family = Socket.APR_UNSPEC;

}

long inetAddress = 0;

try {

inetAddress = Address.info(address, family,

port, 0, pool);

// Create the APR server socket

serverSock = Socket.create(Address.getInfo(inetAddress).family,

Socket.SOCK_STREAM,

Socket.APR_PROTO_TCP, pool);

} catch (Exception ex) {

log.error("Could not create socket for address '" + address + "'");

return 0;

}

if (OS.IS_UNIX) {

Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);

}

// Deal with the firewalls that tend to drop the inactive sockets

Socket.optSet(serverSock, Socket.APR_SO_KEEPALIVE, 1);

// Bind the server socket

int ret = Socket.bind(serverSock, inetAddress);

if (ret != 0) {

log.error("Could not bind: " + Error.strerror(ret));

throw (new Exception(Error.strerror(ret)));

}

return serverSock;

}