目录
socket
概述
-
类套接字socket提供对底层操作系统套接字实现的访问。它可以用来提供比协议特定套接字类更多的操作系统特定功能。
-
在Socket::Constants 下定义的常量也在Socket下定义。例如,Socket::AF_INET和Socket:∶Constants::AF_NET都可用。
- SOCK_STREAM:流套接字为字节流提供有序、可靠的双向连接
- SOCK_DGRAM:数据报套接字提供无连接、不可靠的消息传递
- SOCK_RAW:原始套接字为直接访问或实现网络协议提供低级访问
- SOCK_RDM:可靠的数据报套接字提供可靠的消息传递
- SOCK_SEQPACKET:顺序数据包套接字为数据报提供顺序、可靠的双向连接
- SOCK_PACKET:设备级数据包访问
- SOCK_NONBLOCK:在新文件描述符引用的打开文件描述(请参见打开(2))上设置O_NONBLOCK文件状态标志。
- SOCK_CLOEXEC: 在新文件描述符上设置执行时关闭(FD_CLOEXEC)标志。
-
套接字是双向通信通道的端点。套接字可以在进程内、同一机器上的进程之间或不同机器之间进行通信。
-
domain: 协议系列:
Socket::PF_INET
Socket::PF_INET6
Socket::PF_UNIX
-
type:两个端点之间的通信类型
Socket::SOCK_STREAM
Socket::SOCK_DGRAM.
-
protocol: 通常为零。这可以用于识别协议的变体。
-
hostname: 网络接口的标识符:
字符串(主机名、IPv4或IPv6地址或指定广播地址的广播)
指定INADDR_ANY的零长度字符串
一个整数(按主机字节顺序解释为二进制地址)。
ftp client
#!/usr/bin/ruby
#encoding:UTF-8
require 'socket'
s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM)
s.connect(Socket.pack_sockaddr_in(21, 'ftp.sunet.se'))
line=s.gets()
puts line
s.puts("USER anonymous")
line=s.gets()
puts line
s.puts("PASS anonymous")
line=s.gets()
puts line
s.puts("quit")
while answer=s.gets() do
puts answer
end
[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_JZFL71.sh
220 Please use https://mirror.accum.se/ whenever possible.
331 Please specify the password.
230 Login successful.
221 Goodbye.
[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_JZFL71.sh
220 Please use https://mirror.accum.se/ whenever possible.
331 Please specify the password.
230 Login successful.
221 Goodbye.