Provided by:
manpages-zh_1.5.1-3_all 
NAME ()
udp - IPv4 上悸 UDP å”è°.
SYNOPSIS ()
#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
DESCRIPTION(z)
這是一 RFC768 ä¸çš„ä½¿ç”¨è€…æ•¸æ“šå ±å”è°çš„實ç¾. 它實ç¾ç„¡é€£æŽ¥çš„,
ä¸å¯é çš„æ•¸æ“šå ±ä¿¡æ¯åŒ…æœå‹™. ä¿¡æ¯åŒ…å¯èƒ½åœ¨å®ƒæŠ¾ï¬æ“‰å„¦F之å‰å¥sæŽ’åºæˆ–者契_.
UDP 通éŽç”Ÿæˆå’Œæª¢æŸ¥æ ¡é©—和來俘ç²å‚³è¼¸éŒ¯èª¤.
當創建一 UDP å¥—æŽ¥å—æ™‚, 它的本地和é ç¨‹åœ°å€æ˜¯ä¸ç¢ºå®šçš„. å¯ä»¥ä½¿ç”¨å¸¶ä¸€-
èŒ¼é™µè‰¦å ›æ¼²aå€ä½œç‚ºåƒæ•¸çš„ sendto(2) 或者 sendmsg(2)
ç«‹å³ç™¼é€æ•¸æ“šå ±.如果套接å—上調用了 connect(2) 時, 則è¨ç½®é è¨çš„目的地å€,
æ•¸æ“šå ±å¯ä»¥ä½¿ç”¨ send(2) 或者 write(2) 發é€è€Œä¸éœ€n指定目的地å€.
也å¯ä»¥é€šéŽå‚³éžä¸€èŒ¼aå€çµ¦ sendto(2) 或者 sendmsg(2) 來發é€åˆ°å…¶å®ƒç›®çš„地å€.
為了接收信æ¯åŒ…,套接å—å¿…é ˆæ¼¸ç”¨ bind(2) ç¶å®šä¸€èŒˆèªša地å€, 如果沒有這麼åš,
套接å—層在第一茖æ´å³ˆæˆ”ç–ç‹ è™¼D時將自動分é…一茈誚a端å£.
所有接收æ“作åªè¿”回一茷Hæ¯åŒ…. ç•¶ä¿¡æ¯åŒ…å°æ–¼æ‰€å‚³éžçš„ç·©æ²–å€æ™‚,
則åªè¿”回那些數據, ç•¶ä¿¡æ¯åŒ…大於所傳éžçš„ç·©æ²–å€æ™‚,則截斷信æ¯åŒ…並è¨ç½®
MSG_TRUNC 標誌.
IP é¸é …å¯ä»¥ä½¿ç”¨æzæ–¼ ip(7) ä¸çš„套接å—é¸é …ç™¼é€æˆ–接收. åªæœ‰æ‰“開了åˆé©çš„
sysctl 時, æ ¸å¿ƒæ‰è™•ç†å®ƒ(ä¸éŽå³ä½¿é—œé–‰äº†å®ƒ, ä»ç„¶æœƒå‚³éžçµ¦ä½¿ç”¨è€…). åƒè¦‹
ip(7).
如果è¨ç½®äº† MSG_DONTROUTE 標誌,å‰‡ç™¼é€æ™‚目的地å€å¿…é ˆæŒ‡å‘一茈誚a接å£åœ°å€,
而且信æ¯åŒ…åªç™¼åˆ°è©²æŽ¥å£.
ç•¶ UDP çš„ç¸½é•·è¶…éŽæŽ¥å£ MTU(Maximum Transmission Unit 最大傳輸單元)時,
UDP 會å°ä¿¡æ¯åŒ…進行分段. 一è颽å•蘢ç©ç©»nçš„å¯é¸æ–¹æ³•是使用 path MTU
discovery(路徑MTU發ç¾), 它æzæ–¼ ip(7) ä¸çš„ IP_PMTU_DISCOVER 部分.
ADDRESS FORMAT ()
UDP 使用 IPv4 çš„ sockaddr_in åœ°å€æ ¼å¼,å…¶æzæ–¼ ip(7) ä¸.
ERROR HANDLING ()
所有咫jéŒ¯èª¤éƒ½æœƒä»¥éŒ¯èª¤è¿”å›žïŸ´æ¼±é–¬â–²ï¨æ’麂æ´å³ˆ,
å³ä½¿å¥—æŽ¥å—æ²’有連接亦如æ¤.é€™ç¨®è™•ç†æ–¹å¼æœ‰åˆ¥æ–¼é‡µh其它的 BSD
套接å—å¯¦ç¾æ–¹æ³•, 除éžå¥—接å—連接上, å¦å‰‡é‚£äº›æ–¹æ³•䏿œƒå‚³éžä»»ä½•錯誤, Linux
çš„è™•ç†æ–¹å¼éµå¾ª RFC1122 çš„n求.
為了與以å‰çš„代碼相容,å¯ä»¥è¨ç½® SO_BSDCOMPAT SOL_SOCKET
é¸é …令åªåœ¨å¥—接å—已連接的情æ³ä¸‹æŽ¥æ”¶é 程錯誤( EPROTO å’Œ EMSGSIZE) 除外.
最好是袨_代碼並é©ç•¶åœ°è™•ç†éŒ¯èª¤, 而ä¸n打開該é¸é ….
本地產生的錯誤總是傳éž.
當打開了 IP_RECVERR é¸é …時, 所有錯誤å¯ä»¥å˜å„²åœ¨å¥—接å—錯誤隊列ä¸,
並å¯ä»¥é€šéŽå¸¶ MSG_ERRQUEUE 標è˜è¨ç½®çš„ recvmsg(2) 來接收.
ERRORS ()
所有列在 socket(7) 或 ip(7) ä¸çš„錯誤都å¯ä»¥åœ¨ä¸€ UDP 套接å—上收發時收到.
ECONNREFUSED 沒有與目的地å€ç›¸é—œè¯çš„æŽ¥æ”¶è€…. 這å¯èƒ½ç”±æ–¼åœ¨å‰æƒœ@-
茬qéŽè©²å¥—接å—發é€çš„ä¿¡æ¯åŒ…而引發.
VERSIONS()
IP_RECVERR 是 Linux 2.2 ä¸çš„æ–°å¼.
CREDITS()
æœ¬æ‰‹å†Šéšæ¼£@者為 Andi Kleen.
SEE ALSO()
ip(7), socket(7), raw(7).
RFC768: ä½¿ç”¨è€…æ•¸æ“šå ±å”è°.
RFC1122: 主機需求
RFC1191: æz path MTU discovery (路徑MTU查找).
[]
riser <boomer@ccidnet.com>
[]
2001/07/19
ã€mä¸ä»åœç˜linuxan:
http://cmpp.linuxforum.net