как получить тип сокета? - PullRequest
       13

как получить тип сокета?

1 голос
/ 15 января 2011

У меня есть класс, который ожидает получить сокет udp или tcp.

Теперь я хочу проверить, какой сокет был передан классу.

class NetClientWriter {
    public __construct($socket=null) {
    // do we have a socket?
    if(!is_null($socket)) {
        if(!is_resource($socket) ||
           strtolower(get_resource_type($socket))!='socket') 
            throw new InvalidSocketTypeExeption("This is not a resource of type socket.");
    }
    // socket type
    if(socket_get_option($socket, SOL_SOCKET, SO_TYPE)==SOCK_STREAM) {
        echo("TCP!!!!!");
    }
    elseif(socket_get_option($socket, SOL_SOCKET, SO_TYPE)==SOCK_DGRAM) {
        echo("UDP!!!!!");
    }
    else throw new InvalidSocketTypeExeption("Invalid socket type. Just UDP and TCP sockets supported.");
    }
}

Большое спасибо

1 Ответ

2 голосов
/ 15 января 2011

Используйте socket_get_option и проверьте наличие SOCK_STREAM (TCP) против SOCK_DGRAM (UDP).

...