socketmodule.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 549 行 · 第 1/2 页

JAVA
549
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * *   Free Software Foundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.quercus.lib.file;import com.caucho.quercus.annotation.NotNull;import com.caucho.quercus.annotation.Optional;import com.caucho.quercus.annotation.ReturnNullAsFalse;import com.caucho.quercus.env.BooleanValue;import com.caucho.quercus.env.Env;import com.caucho.quercus.env.LongValue;import com.caucho.quercus.env.StringValue;import com.caucho.quercus.env.Value;import com.caucho.quercus.module.AbstractQuercusModule;import com.caucho.util.L10N;import com.caucho.vfs.TempBuffer;import com.caucho.vfs.TempCharBuffer;import java.io.IOException;import java.io.InputStream;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.Socket;import java.util.HashMap;import java.util.Map;import java.util.logging.Logger;/** * Information and actions for about sockets */public class SocketModule extends AbstractQuercusModule {  private static final L10N L = new L10N(SocketModule.class);  private static final Logger log    = Logger.getLogger(SocketModule.class.getName());  private static final int AF_UNIX = 1;  private static final int AF_INET = 2;  private static final int AF_INET6 = 10;  private static final int SOCK_STREAM = 1;  private static final int SOCK_DGRAM = 2;  private static final int SOCK_RAW = 3;  private static final int SOCK_SEQPACKET = 5;  private static final int SOCK_RDM = 4;  private static final int MSG_OOB = 1;  private static final int MSG_WAITALL = 256;  private static final int MSG_PEEK = 2;  private static final int MSG_DONTROUTE = 4;  private static final int SO_DEBUG = 1;  private static final int SO_REUSEADDR = 2;  private static final int SO_KEEPALIVE = 9;  private static final int SO_DONTROUTE = 5;  private static final int SO_LINGER = 13;  private static final int SO_BROADCAST = 6;  private static final int SO_OOBINLINE = 10;  private static final int SO_SNDBUF = 7;  private static final int SO_RCVBUF = 8;  private static final int SO_SNDLOWAT = 19;  private static final int SO_RCVLOWAT = 18;  private static final int SO_SNDTIMEO = 21;  private static final int SO_RCVTIMEO = 20;  private static final int SO_TYPE = 3;  private static final int SO_ERROR = 4;  private static final int SOL_SOCKET = 1;  private static final int SOMAXCONN = 128;  private static final int PHP_NORMAL_READ = 1;  private static final int PHP_BINARY_READ = 2;  private static final int SOCKET_EPERM = 1;  private static final int SOCKET_ENOENT = 2;  private static final int SOCKET_EINTR = 4;  private static final int SOCKET_EIO = 5;  private static final int SOCKET_ENXIO = 6;  private static final int SOCKET_E2BIG = 7;  private static final int SOCKET_EBADF = 9;  private static final int SOCKET_EAGAIN = 11;  private static final int SOCKET_ENOMEM = 12;  private static final int SOCKET_EACCES = 13;  private static final int SOCKET_EFAULT = 14;  private static final int SOCKET_ENOTBLK = 15;  private static final int SOCKET_EBUSY = 16;  private static final int SOCKET_EEXIST = 17;  private static final int SOCKET_EXDEV = 18;  private static final int SOCKET_ENODEV = 19;  private static final int SOCKET_ENOTDIR = 20;  private static final int SOCKET_EISDIR = 21;  private static final int SOCKET_EINVAL = 22;  private static final int SOCKET_ENFILE = 23;  private static final int SOCKET_EMFILE = 24;  private static final int SOCKET_ENOTTY = 25;  private static final int SOCKET_ENOSPC = 28;  private static final int SOCKET_ESPIPE = 29;  private static final int SOCKET_EROFS = 30;  private static final int SOCKET_EMLINK = 31;  private static final int SOCKET_EPIPE = 32;  private static final int SOCKET_ENAMETOOLONG = 36;  private static final int SOCKET_ENOLCK = 37;  private static final int SOCKET_ENOSYS = 38;  private static final int SOCKET_ENOTEMPTY = 39;  private static final int SOCKET_ELOOP = 40;  private static final int SOCKET_EWOULDBLOCK = 11;  private static final int SOCKET_ENOMSG = 42;  private static final int SOCKET_EIDRM = 43;  private static final int SOCKET_ECHRNG = 44;  private static final int SOCKET_EL2NSYNC = 45;  private static final int SOCKET_EL3HLT = 46;  private static final int SOCKET_EL3RST = 47;  private static final int SOCKET_ELNRNG = 48;  private static final int SOCKET_EUNATCH = 49;  private static final int SOCKET_ENOCSI = 50;  private static final int SOCKET_EL2HLT = 51;  private static final int SOCKET_EBADE = 52;  private static final int SOCKET_EBADR = 53;  private static final int SOCKET_EXFULL = 54;  private static final int SOCKET_ENOANO = 55;  private static final int SOCKET_EBADRQC = 56;  private static final int SOCKET_EBADSLT = 57;  private static final int SOCKET_ENOSTR = 60;  private static final int SOCKET_ENODATA = 61;  private static final int SOCKET_ETIME = 62;  private static final int SOCKET_ENOSR = 63;  private static final int SOCKET_ENONET = 64;  private static final int SOCKET_EREMOTE = 66;  private static final int SOCKET_ENOLINK = 67;  private static final int SOCKET_EADV = 68;  private static final int SOCKET_ESRMNT = 69;  private static final int SOCKET_ECOMM = 70;  private static final int SOCKET_EPROTO = 71;  private static final int SOCKET_EMULTIHOP = 72;  private static final int SOCKET_EBADMSG = 74;  private static final int SOCKET_ENOTUNIQ = 76;  private static final int SOCKET_EBADFD = 77;  private static final int SOCKET_EREMCHG = 78;  private static final int SOCKET_ERESTART = 85;  private static final int SOCKET_ESTRPIPE = 86;  private static final int SOCKET_EUSERS = 87;  private static final int SOCKET_ENOTSOCK = 88;  private static final int SOCKET_EDESTADDRREQ = 89;  private static final int SOCKET_EMSGSIZE = 90;  private static final int SOCKET_EPROTOTYPE = 91;  private static final int SOCKET_ENOPROTOOPT = 92;  private static final int SOCKET_EPROTONOSUPPORT = 93;  private static final int SOCKET_ESOCKTNOSUPPORT = 94;  private static final int SOCKET_EOPNOTSUPP = 95;  private static final int SOCKET_EPFNOSUPPORT = 96;  private static final int SOCKET_EAFNOSUPPORT = 97;  private static final int SOCKET_EADDRINUSE = 98;  private static final int SOCKET_EADDRNOTAVAIL = 99;  private static final int SOCKET_ENETDOWN = 100;  private static final int SOCKET_ENETUNREACH = 101;  private static final int SOCKET_ENETRESET = 102;  private static final int SOCKET_ECONNABORTED = 103;  private static final int SOCKET_ECONNRESET = 104;  private static final int SOCKET_ENOBUFS = 105;  private static final int SOCKET_EISCONN = 106;  private static final int SOCKET_ENOTCONN = 107;  private static final int SOCKET_ESHUTDOWN = 108;  private static final int SOCKET_ETOOMANYREFS = 109;  private static final int SOCKET_ETIMEDOUT = 110;  private static final int SOCKET_ECONNREFUSED = 111;  private static final int SOCKET_EHOSTDOWN = 112;  private static final int SOCKET_EHOSTUNREACH = 113;  private static final int SOCKET_EALREADY = 114;  private static final int SOCKET_EINPROGRESS = 115;  private static final int SOCKET_EISNAM = 120;  private static final int SOCKET_EREMOTEIO = 121;  private static final int SOCKET_EDQUOT = 122;  private static final int SOCKET_ENOMEDIUM = 123;  private static final int SOCKET_EMEDIUMTYPE = 124;  private static final int SOL_TCP = 6;  private static final int SOL_UDP = 17;  private static final HashMap<String,Value> _constMap    = new HashMap<String,Value>();  /**   * Returns the constants defined by this module.   */  public Map<String,Value> getConstMap()  {    return _constMap;  }   @ReturnNullAsFalse  public static SocketInputOutput socket_create(Env env,                                              int domain,                                               int type,                                               int protocol)  {    try {      InetAddress local = null;      SocketInputOutput.Domain socketDomain = SocketInputOutput.Domain.AF_INET;      switch (domain) {        case AF_INET:          socketDomain = SocketInputOutput.Domain.AF_INET;          break;        case AF_INET6:          socketDomain = SocketInputOutput.Domain.AF_INET6;          break;        case AF_UNIX:          env.warning(L.l("Unix sockets not supported"));          return null;        default:          env.warning(L.l("Unknown domain: {0}", domain));          return null;      }      switch (type) {        case SOCK_STREAM:          return new SocketInputOutput(env, new Socket(), socketDomain);        case SOCK_DGRAM:          env.warning(L.l("Datagrams not supported"));          return null;        default:          return null;      }    } catch (Exception e) {      return null;    }  }  public static boolean socket_bind(Env env, @NotNull SocketInputOutput socket,                                    StringValue address,                                     @Optional("0") int port)  {    try {      InetAddress []addresses = InetAddress.getAllByName(address.toString());      if (addresses == null || addresses.length < 1) {        //XXX: socket.setError();        return false;      }      InetSocketAddress socketAddress =         new InetSocketAddress(addresses[0], port);      socket.bind(socketAddress);      return true;    } catch (IOException e) {      return false;    }  }  public static void socket_close(Env env, @NotNull SocketInputOutput socket)  {    socket.close();  }

⌨️ 快捷键说明

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