Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Linuxϵͳµ÷Óà recv/recvfrom/recvmsgº¯ÊýÏê½â

¡¾recv/recvfrom/recvmsgϵͳµ÷Óá¿ 
¹¦ÄÜÃèÊö£º
´ÓÌ×½Ó×ÖÉϽÓÊÕÒ»¸öÏûÏ¢¡£¶ÔÓÚrecvfrom ºÍ recvmsg£¬¿ÉͬʱӦÓÃÓÚÃæÏòÁ¬½ÓµÄºÍÎÞÁ¬½ÓµÄÌ×½Ó×Ö¡£recvÒ»°ãÖ»ÓÃÔÚÃæÏòÁ¬½ÓµÄÌ×½Ó×Ö£¬¼¸ºõµÈͬÓÚrecvfrom£¬Ö»Òª½«recvfromµÄµÚÎå¸ö²ÎÊýÉèÖÃNULL¡£
Èç¹ûÏûϢ̫´ó£¬ÎÞ·¨ÍêÕû´æ·ÅÔÚËùÌṩµÄ»º³åÇø£¬¸ù¾Ý²»Í¬µÄÌ×½Ó×Ö£¬¶àÓàµÄ×ֽڻᶪÆú¡£
¼ÙÈçÌ×½Ó×ÖÉÏûÓÐÏûÏ¢¿ÉÒÔ¶ÁÈ¡£¬³ýÁËÌ×½Ó×ÖÒѱ»ÉèÖÃΪ·Ç×èÈûģʽ£¬·ñÔò½ÓÊÕµ÷ÓûáµÈ´ýÏûÏ¢µÄµ½À´¡£
Ó÷¨£º
#include <sys/types.h>
#include <sys/socket.h>
ssize_t recv(int sock, void *buf, size_t len, int flags);
ssize_t recvfrom(int sock, void *buf, size_t len, int flags,
     struct sockaddr *from, socklen_t *fromlen);
ssize_t recvmsg(int sock, struct msghdr *msg, int flags);
²ÎÊý£º  
sock£ºË÷Òý½«Òª´ÓÆä½ÓÊÕÊý¾ÝµÄÌ×½Ó×Ö¡£
buf£º´æ·ÅÏûÏ¢½ÓÊÕºóµÄ»º³åÇø¡£
len£ºbufËùÖ¸»º³åÇøµÄÈÝÁ¿¡£
flags£ºÊÇÒÔÏÂÒ»¸ö»òÕß¶à¸ö±êÖ¾µÄ×éºÏÌ壬¿Éͨ¹ýor²Ù×÷Á¬ÔÚÒ»Æð
MSG_DONTWAIT£º²Ù×÷²»»á±»×èÈû¡£
MSG_ERRQUEUE£º ָʾӦ¸Ã´ÓÌ×½Ó×ֵĴíÎó¶ÓÁÐÉϽÓÊÕ´íÎóÖµ£¬ÒÀ¾Ý²»Í¬µÄЭÒ飬´íÎóÖµÒÔijÖÖ¸¨×ôÐÔÏûÏ¢µÄ·½Ê½´«µÝ½øÀ´£¬ ʹÓÃÕßÓ¦¸ÃÌṩ×ã¹»´óµÄ»º³åÇø¡£µ¼Ö´íÎóµÄÔ­·â°üͨ¹ýmsg_iovec×÷Ϊһ°ãµÄÊý¾ÝÀ´´«µÝ¡£µ¼Ö´íÎóµÄÊý¾Ý±¨Ô­Ä¿±êµØÖ·×÷Ϊmsg_name±»Ìṩ¡£ ´íÎóÒÔsock_extended_err½á¹¹ÐÎ̬±»Ê¹Ó㬶¨ÒåÈçÏÂ
#define SO_EE_ORIGIN_NONE    0
#define SO_EE_ORIGIN_LOCAL   1
#define SO_EE_ORIGIN_ICMP    2
#define SO_EE_ORIGIN_ICMP6   3
struct sock_extended_err
{
    u_int32_t ee_errno;   /* error number */
    u_int8_t ee_origin; /* where the error originated */
    u_int8_t ee_type;    /* type */
    u_int8_t ee_code;    /* code */
    u_int8_t ee_pad;
    u_int32_t ee_info;    /* additional information */
    u_int32_t ee_data;    /* other data */
    /* More data may follow */
};
MSG_PEEK£ºÖ¸Ê¾Êý¾Ý½ÓÊÕºó£¬ÔÚ½ÓÊÕ¶ÓÁÐÖÐ


Ïà¹ØÎĵµ£º

linuxѧϰָÄÏ

ǰÑÔ£¬Linux/Unix ÉçÇøµÄ°æ¿é²»ÈÈÄÖ£¬ÐÂÊÖÌ«¶à£¬¸ßÊÖ̫棬ż°Ñ×Ô¼ºÕ⼸ÄêµÄLinuxѧϰµÄ¹ý³Ì½²½²£¬Ï£ÍûÄܸø´ó¼ÒÓеã°ïÖú£¬
Òýµ¼³õѧÕßѧϰµÄ·½Ïò£¬ÉÙ×ßÍä·£¬Ê°빦±¶£¬Í¬Ê±Ò²ÊÇÅ×שÒýÓñ£¬Çë¹ýÀ´ÈËÈÈÁÒ·¢ÑÔ¡£

1. Ê×ÏÈÊìϤ Linux

½¨ÒéÔÚ Windows Éϰ²×° VMware Workstation 6.5.0(ÒÔϼò³ÆVM£©, ÏÂÔØÖÖ×ÓÔÚ ......

Linux×öÒ»¸ö¹¦ÄÜÍ걸µÄ·ÓÉÆ÷

±¾ÎÄÖ÷Òª½éÉÜÈçºÎÓÃLinux×öÒ»¸ö¹¦ÄÜÍ걸µÄ·ÓÉÆ÷£¬ÕâÀォÖ÷Òª½éÉܾ²Ì¬Â·ÓÉÆ÷ºÍ¶¯Ì¬Â·ÓÉÆ÷µÄÅäÖ㬵«²»°üÀ¨IPαװ»òÕß˵¹«ÓÃÒ»¸öIPµØÖ··ÃÎÊÍâÃæÍøÂçµÈÎÊÌâ¡£ÆäÒѾ­²»ÊôÓÚ±¾Ö÷ÌâÌÖÂ۵ķ¶Î§£¬Çë²Î¿¼ÆäËûÈç·À»ðǽµÄÅäÖõȵÄÄÚÈÝ¡£
LRP(Linux Router Project)ÒѾ­³ÉÁ¢ÁËÓкü¸ÄêµÄʱ¼äÁË¡£Õâ¸ö¼Æ»®µÄÄ¿µÄÊÇÀûÓÃLinux²Ù×÷ϵͳ½«À ......

linux 2.6Ô´´úÂëÇé¾°·ÖÎö±Ê¼ÇÖ®ÖжÏÓëÒì³£3

³õʼ»¯ÖжÏÃèÊö·û±í
ÄÚºËÆôÓÃÖжÏÒÔǰ£¬±ØÐë°Ñidt±íµÄ³õʼµØÖ·×°µ½idtr¼Ä´æÆ÷£¬²¢³õʼ»¯±íÖеÄÿһÏî¡£ÕâÏ×÷ÊÇÔÚ³õʼ»¯ÏµÍ³Ê±Íê³É¡£
intÖ¸ÁîÔÊÐíÓû§Ì¬½ø³Ì·¢³öÒ»¸öÖжÏÐźţ¬ÆäÖµ¿ÉÒÔÊÇ0-255µÄÈÎÒâÒ»¸öÏòÁ¿¡£Òò´Ë¡£ÎªÁË·ÀÖ¹Óû§Í¨¹ýintÖ¸ÁîÄ£Äâ·Ç·¨µÄÖжϺÍÒì³££¬idtµÄ³õʼ»¯±ØÐë·Ç³£Ð¡ÐÄ¡£Õâ¿ÉÒÔͨ¹ý°ÑÖжϻòÕßÏÝÚåà ......

linuxÄں˺¯Êý±Ê¼Ç(¶þ)

ÐźÅÖ¸¶¨´¦Àíº¯Êý
void (*signal (int signum,void (*handle)(int)))(int);ÉèÖÃij¸öÐźŵĴ¦Àí·½·¨
int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);ÓÃÓÚ¼ì²é»ò¸Ä±ä½ø³ÌÔÚ½Óµ½ÐźÅʱµÄ¶¯×÷
Ðźż¯²Ù×÷º¯Êý
static inline void sigaddset(sigset_t *set,int _sig);
static inline voi ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ