sockaddr在网络编程中,SOCKADDR_IN 后缀_IN代表什么意思,这种命名规则是什么

sockaddr  时间:2021-07-19  阅读:()

sizeof (struct sockaddr) sizeof (struct sockaddr_in)

都是 16字节 实际上这两个结构可以直接相互转换的。

struct sockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */ }; struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un;

SOCKADDR_IN的经典案例

服务端: int?main(){//创建socketint?sockfd?=?socket(PF_LOCAL,SOCK_DGRAM,0);if(sockfd?==?-1)perror("创建socket失败"),exit(-1);//准备通信地址struct?sockaddr_un?addr;addr.sun_family?=?PF_UNIX;strcpy(addr.sun_path,?"a.sock");//绑定intres=bind(sockfd,?(struct?sockaddr*)&addr,sizeof(addr));if(res==-1)perror("绑定失败"),exit(-1);printf("绑定成功 ");//通信(用读写文件方式)charbuf[100]={};read(sockfd,buf,sizeof(buf));printf("收到信息:%s ",buf);//关闭socketclose(sockfd);return?0;}客户端: int?main(){int?sockfd=socket(PF_LOCAL,SOCK_DGRAM,0);if(sockfd==-1)perror("创建socket失败"),exit(-1);struct?sockaddr_un?addr;addr.sun_family=PF_UNIX;strcpy(addr.sun_path,"a.sock");//连接int?res=connect(sockfd,(structsockaddr*)&addr,sizeof(addr));if(res==-1)perror("失败"),exit(-1);printf("成功 ");write(sockfd,"Hello,Socket!",14);close(sockfd);return?0;}

sockaddr 如何赋值

给你写了个函数做参考,仔细看看吧,我就不多解释了: #include int socketinit(const char *szIP,int nPort,SOCKADDR *pSockAddr) { if (!pSockAddr||!szIP) return -1; if (nPort<1) return -1; memset(pSockAddr,0,sizeof(*pSockAddr)); SOCKADDR_IN *addr=(sockaddr_in *)pSockAddr; addr->sin_family=AF_INET; if (szIP&&strlen(szIP)>0) { if (isalpha(szIP[0])) { hostent *remoteHost=gethostbyname(szIP); if (!remoteHost) { return -1; } addr->sin_addr= *((in_addr *)*remoteHost->h_addr_list); } else { addr->sin_addr.s_addr=_addr(szIP); } } else addr->sin_addr.s_addr=INADDR_ANY; addr->sin_port=htons(nPort); SOCKET nSocket; nSocket=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (nSocket==-1) { return -1; } return nSocket; } void main() { SOCKADDR s; socketinit("127.0.0.1",80,&s); }

Linux socket的几种地址结构 sockaddr与sockaddr

一般就 sockaddr_un /* UNIX domain */ sockaddr_in /* IPv4 */ sockaddr_in6 /* IPv6 */ .... 当然还有协议无关的 sockaddr_storage 一般都会强制转换 (struct sockaddr *)&sockaddr_xx .

在网络编程中,SOCKADDR_IN 后缀_IN代表什么意思,这种命名规则是什么

应该是的意思吧,msdn对SOCKADDR_IN的解释是这样说的: In the address family, this structure is used by Windows Sockets to specify a local or remote endpoint address to which to connect a socket. This is the form of the sockaddr structure specific to the address family and can be cast to sockaddr.

萤光云(13.25元)香港CN2 新购首月6.5折

萤光云怎么样?萤光云是一家国人云厂商,总部位于福建福州。其成立于2002年,主打高防云服务器产品,主要提供福州、北京、上海BGP和香港CN2节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。目前萤光云推出北京云服务器优惠活动,机房为北京BGP机房,购买北京云服务器可享受6.5折优惠+51元代金券(折扣和代金券可叠加使用)。活动期间还支持申请免费试用,需提交工单开通免费试用体验...

SugarHosts糖果主机,(67元/年)云服务器/虚拟主机低至半价

SugarHosts 糖果主机商也算是比较老牌的主机商,从2009年开始推出虚拟主机以来,目前当然还是以虚拟主机为主,也有新增云服务器和独立服务器。早年很多网友也比较争议他们家是不是国人商家,其实这些不是特别重要,我们很多国人商家或者国外商家主要还是看重的是品质和服务。一晃十二年过去,有看到SugarHosts糖果主机商12周年的促销活动。如果我们有需要香港、美国、德国虚拟主机的可以选择,他们家的...

搬瓦工(季付46.7美元)新增荷兰(联通线路)VPS,2.5-10Gbps

搬瓦工最近新增了荷兰机房中国联通(AS9929、AS4837)线路的VPS产品,选项为NL - China Unicom Amsterdam(ENUL_9),与日本软银和洛杉矶(DC06)CN2 GIA配置一致可以互换,属于高端系列,2.5Gbps-10Gbps大带宽,最低季付46.7美元起。搬瓦工VPS隶属于老牌IT7公司旗下,主要提供基于KVM架构VPS主机,数据中心包括美国洛杉矶、凤凰城、纽...

sockaddr为你推荐
360杀毒在线安装怎样使用360度安全卫士在线查杀病毒win7无线局域网win7怎么建立无线局域网联机玩游戏?linksys无线路由器设置如何使用无线路由linksys wet11 在线等java学习思维导图如何一步一步学习java 知乎spotlight搜索是什么苹果手机删除过的短信还可在Spotlight搜索到,怎么能彻底删除?iphone12或支持北斗导航iphone12是问题机吗客服系统方案客户服务系统的设计与实现的开题报告1518qq几开头的QQ号好prepare的用法●请问大家关于prepare和prepare for的用法和区别~~~!!~~~~魔兽世界密保卡魔兽世界密保卡绑定
免费试用vps 阿云浏览器 美国主机评测 linode cdn服务器 哈喽图床 表单样式 京东云擎 免费网络电视 ibrs 免费ftp站点 html空间 100m免费空间 智能骨干网 anylink 免费活动 亚马逊香港官网 cn3 爱奇艺vip免费试用7天 东莞idc 更多