hello
I can create a socket object like this:
Socket.new(Socket::PF_INET, Socket::SOCK_STREAM, 0)
but what exactly is the third parameter ??
according to the Pickaxe this parameter is called "protocol".
what can I specify as a third parameter instead of 0 and do I need this
sometimes ??
thanks in advance !
regards
Markus
Quoteing markusjais@yahoo.de, on Fri, Jan 07, 2005 at 04:01:30AM +0900:
hello
I can create a socket object like this:
Socket.new(Socket::PF_INET, Socket::SOCK_STREAM, 0)
but what exactly is the third parameter ??
according to the Pickaxe this parameter is called "protocol".
what can I specify as a third parameter instead of 0 and do I need this
sometimes ??
The protocol specifies a particular protocol to be used with the
socket. Normally only a single protocol exists to support a
particular socket type within a given protocol family. However, it
is possible that many protocols may exist, in which case a
particular protocol must be speci- fied in this manner. The
protocol number to use is particular to the communication domain in
which communication is to take place; see protocols(5).
from /etc/protocols:
# See also http://www.isi.edu/in-notes/iana/assignments/protocol-numbers
···
From my systems socket manual page:
#
ip 0 IP # internet protocol, pseudo protocol
number
#hopopt 0 HOPOPT # hop-by-hop options for ipv6
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group management protocol
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st2 5 ST2 # ST2 datagram mode (RFC 1819)
So, 0 means to use IP... which is probably what you want to do!
Cheers,
Sam
hello
I can create a socket object like this:
Socket.new(Socket::PF_INET, Socket::SOCK_STREAM, 0)
but what exactly is the third parameter ??
according to the Pickaxe this parameter is called "protocol".
what can I specify as a third parameter instead of 0 and do I need this
sometimes ??
From 'man 7 ip' on my Linux box:
"An IP socket is created by calling the socket(2) function as
socket(PF_INET, socket_type, protocol). Valid socket types are
SOCK_STREAM to open a tcp(7) socket, SOCK_DGRAM to open a udp(7)
socket, or SOCK_RAW to open a raw(7) socket to access the IP protocol
directly. protocol is the IP protocol in the IP header to be received
or sent. The only valid values for protocol are 0 and IPPROTO_TCP for
TCP sockets and 0 and IPPROTO_UDP for UDP sockets. For SOCK_RAW you
may specify a valid IANA IP protocol defined in RFC1700 assigned num-
bers."
So basically, in most usual case (IP and TCP/UDP), specifying the third
parameter is redundant.
You can get the official list of the defined protocol from
Protocol Numbers or from /etc/protocols
on a UNIX machine (not sure where it is on a Windows box).
Hope it helps,
Guillaume.
···
On Fri, 2005-01-07 at 04:01 +0900, Markus Jais wrote:
thanks in advance !
regards
Markus