首页 > 编程语言 >网络编程相关接口

网络编程相关接口

时间:2024-06-05 22:14:14浏览次数:20  
标签:sockaddr struct int 编程 网络 接口 sockfd 接字 addr

网络编程相关接口

//创建套接字
int socket(int domain, int type, int protocol);
/***********************************************
*参数		@domain	网络协议一般使用AF_INET(IPV4)
*		 @type	 传输协议
*				 SOCK_STREAM	tcp协议
*				 SOCK_DGRAM		udp协议
*		@protocol 默认为0,由系统设置
*返回值	成功	文件描述符	失败	-1
***********************************************/
//向其他套接字发送信息
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
               const struct sockaddr *dest_addr, socklen_t addrlen);
/***********************************************
*参数		@sockfd		套接字描述符
*		  @buf		 缓冲区
*		  @len		 发送的消息大小
*		  @flags	 发送消息标志位,一般为0
*		  @dest_addr  接收端的主机信息
*		  @addrlen	  接收端的主机信息大小
*返回值	成功	发送的消息的字节个数		失败	-1
*注意事项	由于相关结构体的类型为 struct sockaddr_in 而参数要求的类
*		   型为 struct sockaddr 所以在使用时需要进行强制转换
***********************************************/
//相关结构体
struct sockaddr_in {
       sa_family_t    sin_family; 			//IP协议
       in_port_t      sin_port;  			//端口
       struct in_addr sin_addr;  			
           };
struct in_addr {
    	uint32_t       s_addr;    			//ip
           };

//接收其他套接字信息
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                 struct sockaddr *src_addr, socklen_t *addrlen);
/***********************************************
*参数		@sockfd		套接字描述符
*		  @buf		 缓冲区
*		  @len		 接收消息的大小
*		  @flags	 发送消息标志位,一般为0
*		  @src_addr	 源主机的信息
*		  @addrlen	 源主机的信息大小
*返回值	成功	发送的消息的字节个数		失败	-1
*注意事项	由于相关结构体的类型为 struct sockaddr_in 而参数要求的类
*		   型为 struct sockaddr 所以在使用时需要进行强制转换
***********************************************/
//绑定本地地址
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
/***********************************************
*参数		@sockfd		套接字描述符
*		  @addr		  绑定的本地地址的结构体指针
*		  @addrlen	  结构体大小
*
*返回值	 成功	0	失败	-1	
*注意事项	在使用 recvfrom 之前需要先绑定端口
***********************************************/
//监听tcp有无链接
int listen(int sockfd, int backlog);
/***********************************************
*参数		@sockfd		套接字描述符
*		 @backlog	  连接客户端的等待队列长度
*返回值	成功	0		失败	-1	
*注意事项	适用于tcp
***********************************************/
//接收连接请求
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
/***********************************************
*参数		@sockfd		 套接字描述符
*		 @addr		  记录对方主机地址的结构指针
*		 @addrlen	  对方主机的地址信息长度
*返回值	成功	新的套接字描述符	失败 	-1
*注意事项	适用于tcp
***********************************************/
/*********************************其他常用接口**********************************/
//将本地字节序转换为网络字节序
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
//将网络字节序转换为本地字节序
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
/***********************************************
*注意事项	 由于不同架构的存储方式不同(大小端存储),
*			所以在上传至网络时需要将其转换为网络字节序(大端存储)
***********************************************/
//将字符串形式的点分十进制转换为网络字节序
in_addr_t inet_addr(const char *cp);
//将网络字节序转换为字符串形式的点分十进制
char *inet_ntoa(struct in_addr in);

标签:sockaddr,struct,int,编程,网络,接口,sockfd,接字,addr
From: https://www.cnblogs.com/waibibabu-/p/18233999

相关文章

  • Linux基础 (十四):socket网络编程
         我们用户是处在应用层的,根据不同的场景和业务需求,传输层就要为我们应用层提供不同的传输协议,常见的就是TCP协议和UDP协议,二者各自有不同的特点,网络中的数据的传输其实就是两个进程间的通信,两个进程在通信时,传输层使用TCP协议将一方进程的应用层的数据传输给另一......
  • Linux基础 (十三):计算机网络基础概论
    一、网络基本概念1.1网络    把独立自主的计算机通过传输介质和网络设备链接起来,就构成一个网络,网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、路由器等设备。网络设备有:交换机、路由器、集线器传输介质有:双绞线、同轴电缆、光纤......
  • JavaScript第十讲:DOM编程(1):节点概念,如何获取元素节点,节点属性,样式
    前言在当今的Web开发中,DOM(DocumentObjectModel)编程扮演着至关重要的角色。DOM是HTML和XML文档的编程接口,它使得我们可以像操作对象一样来操作网页上的元素。无论是构建动态网页,还是实现用户交互,都离不开对DOM的深入理解和灵活运用。在本文中,我们将开启DOM编程的系列学习之旅......
  • <网络安全VIP>第二篇《工业控制软件》
    1PLCPLC,(ProgrammableLogicController),可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。2DCS四、DCS的发展趋势一、DCS的基本定义DCS是分布式控制系统(DistributedControlSystem)的英文缩写,在国内自控行业又称之为集散控制系统。DCS控......
  • microeco包网络分析的一些关键属性
    Vertex 135Edge 1523Average_degree 22.562962962963Average_path_length 2.20846705198353Network_diameter 6Clustering_coefficient 0.701431967070555Density 0.168380320619127Heterogeneity 0.744514690067939Centralization 0.264455500276396Modularity 0.34......
  • 网络编程练习题---利用TCP协议完成客户端与服务端点对点通信
    目录题目一解析代码实现题目二:解析代码实现tcp_client.ctcp_server.c题目一设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确。解析主机打算响应某个网站的网络请求,但是只知道网站域名是无法通信的,需要对域名进行地址解析,得到网站的公......
  • 网络编程
    网络编程目录网络编程1两个基本模型1.1OSI模型(七层模型)1.2开放式系统互连模型(TCP/IP)2.IP协议(IPV4/IPV6)互联网协议2.1IP地址2.2点分十进制2.3IP地址的分类2.UDP协议3.TCP协议1两个基本模型1.1OSI模型(七层模型)/*********************************应用层*表示层*......
  • 网络编程中UDP协议通信
    #include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<errno.h>#include<stdlib.h>#include<time.h>#include<string.h>#include<netinet/ip.h>#include<netinet/in.h>#include&......
  • ### 探索Java开发中的关键问题:从性能优化到安全性,全方位提升你的编程技能
    在这篇文章中,我们将深入探讨Java开发中最受关注的关键问题,并提供实用的解决方案,帮助你在编程之路上不断精进。以下是我们将覆盖的主要内容:1. **性能优化**     * **垃圾回收(GarbageCollection)**    * **问题**:不同垃圾回收器的选择和调优。......
  • 平均年薪40w、学历经验不限,网络安全这个职业到底有多吃香?
    前言近两年,网络信息发展迅速,为有效应对黑客袭击、保障网络安全,国家大力加强了对网安方面人才建设的培养。据数据显示,目前我国网安人才缺口达140万之多,但目前每年网安人才培养数量远远不及市场需求量。而且现在网络安全相关岗位的薪酬非常高,相关证书的补贴也很多。这对于我......