All of lore.kernel.org
 help / color / mirror / Atom feed
From: 月吹 <getsufuki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [bug][wishlist]I have tranlate socket(2) man into chinese
Date: Tue, 26 Jul 2011 12:51:50 +0800	[thread overview]
Message-ID: <4E2E47E6.1090805@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 328 bytes --]

subscribe linux-man

I will format it later












                                                                         
In memories of HIZUKI AYAKA ,the angel!
                                                                         
                                                                     月 
吹智也

[-- Attachment #2: socket_2 --]
[-- Type: text/plain, Size: 7525 bytes --]

SOCKET(2)

名字
	socket - 建立一个用于交流的端点

概要
	#include <sys/type.h>  /*参见注意*/
	#include <sys/socket.h>

	int socket(int domain, int type, int protocol);

描述
	socket() 建立一个用于交流的端点并且返回一个描述。

	domain 参数指定一个通讯域名;选择的协议将会用于通讯。协议名在 <sys/socket.h> 中定义。 目前已知的格式包括:
	
	名称			目的				手册页
	AF_UNIX, AF_LOCAL	本地通讯			unix(7)
       AF_INET             IPv4 网络协议			ip(7)
       AF_INET6            IPv6 网络协议			ipv6(7)
       AF_IPX              IPX - Novell 协议
       AF_NETLINK          Kernel user interface device     netlink(7)
       AF_X25              ITU-T X.25 / ISO-8208 协议	x25(7)
       AF_AX25             Amateur radio AX.25 协议
       AF_ATMPVC           Access to raw ATM PVCs
       AF_APPLETALK        Appletalk                        ddp(7)
       AF_PACKET           Low level packet interface       packet(7)

	套接字 通过 type 参数来确定通信语义。目前定义的类型有:

       SOCK_STREAM     提供有序的,可靠的,双向的,基于字节流的通讯。可能支持多信道传输。

       SOCK_DGRAM      提供数据报(不面向连接的, 不可靠的固定最大长度的信息) 

       SOCK_SEQPACKET  提供有序的,可靠的,双向的,基于固定最大长度的数据报传输路径;需要一个读取整个伴有输入系统调用的包的用户。

       SOCK_RAW        提供未加工(raw)的网络协议通道。 

       SOCK_RDM        提供可靠的数据报层,但是不保证顺序。 

       SOCK_PACKET     废弃的,不应该在新的程序中使用,参考packet(7)。

	一些套接字类型并未被所有的协议实现; 例如,SOCK_SEQPACKET 并不被 AF_INET 实现。
	
	从 Linux 2.6.27 开始, type 参数可以提供其他的功能: 注意一些 套接字 类型可能包括一下值的或位,用来修改 socket() 的行为。

	SOCK_NONBLOCK   设置 O_NONBLOCK 的标志于新打开的文件描述符。 通过这个标志可以不用调用 fcntl(2) 来达到相同的结果。

	SOCK_CLOEXEC    设置 close-on-exec (FD_CLOEXEC) 的标志于新打开的文件描述符。参加 open(2) 中关于 O_CLOEXEC 的描述,因为
	                  一些原因这个标志很有用。

	protocol 指定一个协议用于套接字。一般情况下,在给定的协议中只允许在一个 套接字 上使用一个协议, 注意 protocol 可以知道为数字 0 。
	但是, 可能存在着很多协议, 但是在本手册的协议必须使用一个。协议用于指定通讯发生地方的“通讯域名”, 参考 protocol(5) 。
	参考 getprotoent(3) 中关于如何把协议名称字符串与协议编号进行映射。

       SOCK_STREAM 类型的套接字是双向直接流, 和管道十分相似。 他们不对记录溢出提供保护。 一个套接字流在接受或发出任何数据时必须处于已连接的状态。和其它套接字通过connect(2) 调用来建立连接。 一旦连接, 数据可能通过 read(2) 和 write(2) 调用传输,也或者是不同的 send(2) 和 recv(2) 调用。当会话结束时,可能会执行 close(2)。带外数据可能也用 send(2) 和 recv(2) 描述与接受。

	SOCK_STREAM 类型的的通信协议应确保信息不丢失与重复。如果一块有协议缓冲的数据不能在合理时间内传输,连接会被认为超时。当在套接字上启用 SO_KEEPALIVE ,协议会以其特定方式检查另一端是否活着。当一个进程接受或发送了一个错误的数据流,会产生并接受一个 SIGPIPE 信号;对于采取默认处理此信号的进程,它将会退出。SOCK_SEQPACKET 套接字采用和 SOCK_STREAM 套接字相同的系统调用。唯一不同的是,read(2) 系统调用只会返回请求的数据量,并将余下到达的任何数据数据包丢弃。此外所有的消息边界的传入的​​数据报将被保留。

	SOCK_DGRAM 和 SOCK_RAW 类型的套接字支持用 sendto(2) 系统调用来发送数据报, 器数据报通常是用 recvfrom(2) 来接受的,这个调用会在下一个数据报中单独的返回发送者的地址。
	
	SOCK_PACKET 是一个遗留的套接字类型,用来从设备驱动中接受原始数据,已经被 packet(7) 调用取代。

	fcntl(2) 的 F_SETOWN 操作可以在带外数据到达时让进程或进程组会收到一个 SIGURG 信号,或者在 SOCK_STREAM 类型的连接在被不期望地打断时,收到 SIGPIPE 信号。这个操作也可能被用于让进程或进程组通过 SIGIO 接收 I/O 和 I/O 不同步的通知。使用 F_SETOWN
等同于使用了 FIOSETOWN 或 SIOCSPGRP 参数的 ioctl(2) 系统调用。
	
	当网络向协议模型发出一个错误情况的信号(例如, 对 IP 使用 ICMP 消息) ,套接字将会设置上 pending 错误标志。 对套接字接下去的操作将会返回 pending 错误的错误代码。对于一些协议,可能会为每一个接字接启用一个用于取出详细错误信息的错误列队; 参见 ip(7) 中的 IP_RECVERR 。

	套接字的操作由套接字级的选项来控制。 这些选项定义于 <sys/socket.h> 中。 setsockopt(2) 和 getsockopt(2) 用于分别用于设置和读取选项。

返回值
	成功时,会返回新套接字的文件描述符。错误时,返回 -1 ,同时 errno 会被适当设置。

错误
	EACCES 不允许创建指定的 类型 和/或 指定的协议的套接字。

	EAFNOSUPPORT
		工具不支持指定的地址。

	EINVAL 未知协议,或协议组不可用。
	
	EINVAL 错误的 type 标志。

	EMFILE 进程文件表溢出。

	ENFILE 已经达到系统上限的文件打开数。

	ENOBUFS 或 ENOMEM
		没有足够的内存,直到有可用的资源套接字不能被创建。

	EPROTONOSUPPORT
		协议类型或指定的协议不被当前域所支持。

	其它的错误可能是由协议模型产生的。

兼容性
	4.4BSD, POSIX.1-2001.

	SOCK_NONBLOCK 与 SOCK_CLOEXEC 标志是 Linux 特有的。

	socket() 出现于 4.2BSD 。通常,非 BSD 系统的 BSD 套接字层克隆是可移植的(包括 System V 的变种)。

注意
	POSIX.1-2001 并不要求包含 <sys/types.h> ,这个头文件在 Linux 下是不必须的。 可是一些历史上的 (BSD) 工具要求这个头文件, 可移植程序很可能希望包含它。

	4.x BSD 下明显固定的协议组有 PF_UNIX , PF_INET ,等等,但是 AF_UNIX 等,它们是用于地址组的。可是 BSD 的 man page 保证“ 协议组一般等于地址组“,随后的标准在每个地方都使用了 AF_* 。

	<sys/types.h> 文件头只在 libc4 以前是必须的。 一些包, 如 util-linux, claim ,是用于在所以 Linux 版本和库上可移植的。它们确实需要这个头文件。

例子
	在  getaddrinfo(3) 中有一个使用套接字的例子。

参见
       accept(2),  bind(2),  connect(2),  fcntl(2),  getpeername(2), getsockname(2), getsockopt(2), ioctl(2), lis‐
       ten(2), read(2), recv(2), select(2), send(2), shutdown(2), socketpair(2), write(2), getprotoent(3),  ip(7),
       socket(7), tcp(7), udp(7), unix(7)

	“An  Introductory  4.3BSD Interprocess Communication Tutorial” 在 UNIX Programmer's Supplementary Documents Volume 1 中被重印。
 	
	“BSD Interprocess Communication Tutorial” 在 UNIX Programmer's Supplementary Documents Volume 1 中被重印













             reply	other threads:[~2011-07-26  4:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-26  4:51 月吹 [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-07-26  5:47 [bug][wishlist]I have tranlate socket(2) man into chinese 月吹

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E2E47E6.1090805@gmail.com \
    --to=getsufuki-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.