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.
CloudCone 商家在以前的篇幅中也有多次介绍到,这个商家也蛮有意思的。以前一直只有洛杉矶MC机房,而且在功能上和Linode、DO、Vultr一样可以随时删除采用按时计费模式。但是,他们没有学到人家的精华部分,要这样的小时计费,一定要机房多才有优势,否则压根没有多大用途。这不最近CloudCone商家有点小变化,有新人洛杉矶优化线路,具体是什么优化的等会我测试看看线路。内存CPU硬盘流量价格...
以前我们在参与到云服务商促销活动的时候周期基本是一周时间,而如今我们会看到无论是云服务商还是电商活动基本上周期都要有超过一个月,所以我们有一些网友习惯在活动结束之前看看商家是不是有最后的促销活动吸引力的,比如有看到阿里云年中活动最后一周,如果我们有需要云服务器的可以看看。在前面的文章中(阿里云新人福利选择共享性N4云服务器年79.86元且送2月数据库),(LAOZUO.ORG)有提到阿里云今年的云...
sparkedhost怎么样?sparkedhost主机。Sparkedhost于2017年7月注册在美国康涅狄格州,2018年收购了ClynexHost,2019年8月从Taltum Solutions SL收购了The Beast Hosting,同年10月从Reilly Bauer收购了OptNode Hosting。sparkedhost当前的业务主要为:为游戏“我的世界”提供服务器、虚拟...
sockaddr为你推荐
android游戏开发教程android手机游戏开发教程如何学好?office软件包office软件包括哪几个部分发博客什么是发博文linksys无线路由器设置如何使用无线路由linksys wet11 在线等微软将停止支持32位Win10系统WIN10系统Microsoft Office已停止工作怎么解决magento2心慌方2是什么意思?金山铁路最新时刻表请问现在轨道交通22号线金山铁路是个什么情况?据说9月28日就开通了啊~~~联通玩电信游戏关于联通到底能不能去电信区玩游戏。。。。买卖论坛请推荐几个二手手机论坛,越多越好如何修改手机ip安卓手机怎样设置ID
网通服务器租用 怎样申请域名 siteground 美国php空间 本网站在美国维护 免费个人空间 流量计费 安徽双线服务器 lamp怎么读 双线空间 金主 闪讯网 privatetracker 脚本大全 pptpvpn cdn免备案空间 超低价 最年轻博士 免费邮件服务器软件 台式电脑主机推荐 更多