IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 網絡編程常用函數接口

網絡編程常用函數接口 時間:2014-10-21      來源:未知

通用結構體:

struct sockaddr {
           sa_family_t sa_family; /* unsigned short , 指定了通信協議家族 */
        char sa_data[14];
        };

IPV4網絡通信地址結構體:

struct sockaddr_in {
                pa_family_t sin_family;
                port_t sin_port;
                struct in_addr {
                        unsigned int s_addr;
                }sin_addr;
        };

UNIX本地通信地址結構體:

struct sockaddr_un {
                sa_family_t sun_family;
                char sun_path[108];
        };

函數名:int socket (int domain, int type, int protocl)

功能:打開一個套接字,并返回一個相關的文件描述符。

返回值:成功,一個新的文件描述符;失敗, -1;

參數表:

int domain, 通信域:
        AF_INET | AF_INET6 | AF_UNIX | AF_PACKET
        int type, 套接字類型:
                SOCK_STREAM 流式套接字
                SOCK_DGRAM 數據報套接字
                SOCK_RAW 原始套接字
        int protocl, 協議(在原始套接字中根據需要選擇使用,流式或數據報套接字中為 0)

函數名: int bind(int sockfd, const struct sockaddr * addr, socklen_t addrlen);

功能:為一個打開的套接字,綁定一個地址(IP+PORT)。

返回值:成功, 0;失敗, -1;

參數表:

int sockfd, 通過socket打開并返回的文件描述符。
        const struct sockaddr * addr, 通用結構體地址,具體根據通信域選擇相關的地址格式。
        socklen_t addrlen, 實際地址結構體的大小。

函數名: int sendto(int sockfd, void *buff, size_t size, int flag, const struct sockaddr *addr, socklen_t addrlen);

功能:向一個指定的目標主機發送數據包。

返回值:成功,實際發送的字節數;失敗, -1;

參數表:

int sockfd, 通過socket打開并返回的文件描述符。
        void *bufff, 即將發送的數據。
        size_t size,數據大小。
        int flag, 發送標志位(阻塞、非阻塞等,如果無特殊要求則設置為0)。
        const struct sockaddr * addr, 目標主機的地址結構體(IP+PORT)。
        socklen_t addrlen, 目標主機地址結構體大小。

函數名: int recvfrom(int sockfd, void *buff, size_t size, int flag, struct sockaddr *addr, socklen_t *addrlen);

功能:接受一個數據包,并帶回數據包的來源地址。

返回值:成功,實際接收的字節數;失敗, -1;對方關閉, 0;

參數表:

int sockfd, 通過socket打開并返回的文件描述符。
        void *bufff, 接受數據的緩沖區。
        size_t size,緩沖區大小。
        int flag, 接收標志位(阻塞、非阻塞等,如果無特殊要求則設置為0)。
        struct sockaddr * addr, 用來保存數據源主機的地址的結構體(IP+PORT)。
        socklen_t *addrlen, 期望接收的數據源主機的地址結構體大小(在使用前由用戶自己初始化);一旦該函數調用結束,該變量會被修改為實際大小。

函數名: int listen(int sockfd, int backlog);

功能:將一個經過bind的套接字置為被動狀態,以便將來使用accept接受新的請求。

返回值:成功, 0;失敗, -1;

參數表:

int sockfd, 通過socket創建,并通過bind后的套接字描述符。
        int backlog, 握手請求隊列的大值。

函數名: int accept(int sockfd, struct sockaddr * addr, socklen_t addrlen);

功能:接受一個握手請求,并返回一個新的文件描述符。

返回值:成功,新的文件描述符(用來收發數據的通道);失敗, -1;

參數表:

int sockfd, 經過socket創建,bind后并且listen后的文件描述符。
        struct sockaddr *addr, 用來帶回握手請求方的地址結構體。
        socklen_t addrlen, 期望接收的對方的地址大小,該值會被修改為實際大小,調用者需提前初始化。

函數名: int select(int nfds, fd_set *rdfds, fd_set *wrfds, fd_set *exceptfds, struct timeval * timval);

功能:在多路IO復用模型中,負責檢測多個文件描述符資源。但沒有資源可操作時,進程阻塞;有資源操作時返回可操作的資源個數。

返回值:成功,資源個數;失敗, -1;超時, 0;

參數表:

int nfds, 檢測的大描述符值+1.
        fd_set *rdfds, 希望監測的讀資源描述符集合。
        fd_set *wrfds, 希望監測的寫資源描述符集合。
        fd_set *wrfds, 希望監測的其他資源描述符集合。
        struct timeval *timval, 超時監測,設定秒+微秒。

select相關函數:

FD_SET(int fd, fd_set * fds): 將描述加入集合中。
        FD_CLR(int fd, fd_set *fds): 將指定描述從集合中移除。
        FD_ZERO(fd_set *fds): 清空一個描述符集合。
        FD_ISSET(Iint fd, fd_set *fds): 測試一個描述符是否在集合中(測試該描述符資源是否可操作);

其他函數接口:

int send(int sockfd, const void *buff, size_t size, int flag);
        int recv(int sockfd, void *buff, size_t size, int flag);
        getpeername(int connfd, struct sockaddr *addr, socklen_t *addrlen);
        getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
        setsockopt(int level, int optname, const void *optval, socklen_t optlen);
        short htons(short );
        int htonl(int);
        short ntohs(short);
        int ntohl(int);

上一篇:java中的匿名內部類總結

下一篇:野指針和空指針的兩個小點

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 喷涂流水线,喷漆流水线-山东天意设备科技 | 制砂机锤头_锤式破碎机锤头_粉煤机锤头_巩义市东辰实业 | 武汉办公室装修公司-展厅装修_湖北今泰装饰工程有限公司官网_今泰装饰 | ?神龙上古堂全国官网_颈腰椎调理服务中心_萨迦藏式秘方渗透法 | 柔性防水套管_刚性防水套管-河南恒生管道制造有限公司 | 移动厕所_真空环保厕所_环保厕所_景区生态厕所_雨施捷移动厕所生产厂家 | 全自动包装机械设备_液体灌装机-迈驰日化包装流水线厂家 | 塑胶跑道厂家_河北小区健身器材_悬浮地板-河北达创体育器材有限公司 | 爬架网@建筑爬架网@冲孔建筑爬架网片@工地冲孔建筑爬架网片@工地冲孔建筑爬架网片厂家@工地冲孔建筑爬架网片生产厂家-安平县诺德金属制品有限公司 | 桁架楼承板_钢筋桁架楼承板厂家-山东新材料科技| 深圳专卖店设计,餐饮空间设计,酒店空间策划设计【左右高端人文空间设计公司】 | 四边封包装机_蒸汽眼罩机_暖宝宝/足贴/热灸贴生产设备_浙江硕源机械有限公司 | 性激素6项实验检测,放射免疫实验检测,明胶酶谱试剂盒,科研用人血清,质控标品,试剂盒-南京信帆生物技术有限公司 | 图表秀——免费在线图表制作工具,数据可视化工具 | 重庆污水处理设备_废气处理设备_纯净水设备-山艺环保 | 康复器材_常州市友邦医疗康复器材有限公司官网 | 商业地产策划_商业地产代理_华锦亿爵商业地产顾问机构 | 庭院大门,铝艺大门厂家,别墅庭院大门「免费设计」汉兰达庭院门厂家 | 徐州护栏,围栏,锌铁丝网围栏安全设施专家徐州铜山区威峰金属护栏厂 | 液压升降货梯_导轨式升降机_往复式提升机_济南宇轩机械厂家 | 品牌T恤零售/批发厂商/供应商_男女式T恤生产/设计-圣达信T恤 | 温湿度变送器_pm2.5传感器_湿敏电阻_二氧化碳传感器_甲醛传感器-美特瑞科技 | 消字号牙膏代加工|面膜代加工|凝胶贴牌|漱口水贴牌-南京三盾药业有限公司-消字号牙膏代加工|面膜代加工|凝胶贴牌|漱口水贴牌-南京三盾药业有限公司 | 上海钧尚电器有限公司 - Faulhaber电机 AMETEK pittman电机 AMETEK ROTRON军用航空风机 Exlar电动缸 MAE电机 MCG电机 CP电动工具 马头工具 AMCI驱动器 直流电机 减速箱 直流伺服电机,无刷电机,直线电机 直流防爆电机 防爆电机 汽车助力转向电机 EPS电机 faulhaber motor faulhaber gearbox NANOTEC电机 ELWOOD电机 PHYTRON电机 EXLAR伺服电动缸 高力矩、高性能直流电机,音圈电机,风机,直流风机,航空风机 | 行李快递安检机-便携式X光安检仪-行李安检机-液体-爆炸物探测仪-安天下安检设备 | 混凝土修补-清水混凝土保护剂-仿清水混凝土-混凝土装修-混凝土色差处理-混凝土色差修复剂-德州唐荣建筑装饰工程有限公司 | 四川迪瑞机电设备有限公司-容积式换热器|半容积式换热器|容积式换热机组|半容积式水加热器|换热器在线除垢防垢器|迪瑞机电 | 耐磨焊丝厂-堆焊焊材研发-修复工程-天津舜荣焊材官网 | 深圳市新纶超净科技有限公司,防静电/洁净室行业系统解决方案提供商 | 网络舆情_网络舆情监控系统_舆情监测软件_舆情监控平台-北鲲舆情 | 实验室实验台-钢木实验台-实验室通风柜-实验室家具-苏州奥纳威 | 苏州涂附磨具厂家-陶瓷磨具-树脂磨具批发-苏州磨料磨具-苏州远东砂轮有限公司 | 景德镇晶达新材料有限公司 | 中国家居资讯网-家居建材-知名十大品牌-著名品牌资讯网 | 苏州涂附磨具厂家-陶瓷磨具-树脂磨具批发-苏州磨料磨具-苏州远东砂轮有限公司 | 苏州ERP定制|苏州CRM|苏州OA|苏州BPM|进销存管理系统-苏州中尚信息科技有限公司 | 摩托车-摩托车配件-摩托车与配件_摩托车与配件行业权威的门户网站! | 生物发酵罐(细菌/植物/液体玻璃实验室发酵罐设备)CIP清洗罐,灭活罐「厂家」-安徽赛德齐瑞发酵罐品牌 | 活性氧化铝球-活性氧化铝干燥剂厂家价格-3A-5A分子筛-巩义市亿洋水处理材料有限公司 | 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 三安光电股份有限公司 |