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.
数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...
Megalayer 商家算是比较新晋的国内主机商,主要方向是美国、香港、菲律宾等机房的独立服务器为主,以及站群服务器和显卡服务器。同时也有新增价格并不是特别优惠的VPS云服务器。上午的时候有网友问问有没有CN2线路的美国独立服务器的,这里我推荐他选择Megalayer看看,目前也是有活动截止到月底的。Megalayer 商家创办2年左右时间,如果我们初次使用建议月付体验。目前在进行且可能截止到6月...
星梦云怎么样?星梦云好不好,资质齐全,IDC/ISP均有,从星梦云这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,星梦云专注四川高防服务器,成都服务器,雅安服务器 。官方网站:点击访问星梦云官网活动方案:1、成都电信年中活动机(封锁UDP,不可解封):机房CPU内存硬盘带宽IP防护流量原价活动价开通方式成都电信优化线路4vCPU4G40G+50...
sockaddr为你推荐
近几年热门专业近几年的热门专业有哪些软件开发的周期知道开发一款App的周期是多久吗怎样恢复系统手机刷机后怎么恢复原来的系统excel2003官方microsoft office 2003下载色中色luntanwww.fzluntan.tk是什么类型的网站啊?物联卡官网移动物联卡怎么注册腾讯汽车论坛腾讯·大楚网的核心产品handoff怎么用如何令Yosemite使用iPhone的通话功能和Handoff设置罗振宇2017跨年演讲“时间的朋友”跨年演讲办了多少场,分别是什么主题?音响解码CD锁了怎么解
asp主机空间 流媒体服务器 网站保姆 美国php空间 圣诞节促销 流量计费 免费网页空间 环聊 空间首页登陆 php服务器 双线空间 测速电信 supercache 腾讯数据库 卡巴斯基试用版下载 googlevoice 锐速 web服务器有哪些 西部数码主机 达拉斯 更多