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.
georgedatacenter这次其实是两个促销,一是促销一款特价洛杉矶E3-1220 V5独服,性价比其实最高;另外还促销三款特价vps,georgedatacenter是一家成立于2019年的美国VPS商家,主营美国洛杉矶、芝加哥、达拉斯、新泽西、西雅图机房的VPS、邮件服务器和托管独立服务器业务。georgedatacenter的VPS采用KVM和VMware虚拟化,可以选择windows...
台湾云服务器去哪里买?国内有没有哪里的台湾云服务器这块做的比较好的?有很多用户想用台湾云服务器,那么判断哪家台湾云服务器好,不是按照最便宜或最贵的选择,而是根据您的实际使用目的选择服务器,只有最适合您的才是最好的。总体而言,台湾云服务器的稳定性确实要好于大陆。今天,云服务器网(yuntue.com)小编来介绍一下台湾云服务器哪里买和一年需要多少钱!一、UCloud台湾云服务器UCloud上市云商,...
diyvm怎么样?diyvm商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;DiyVM独立服务器开设在香港沙田电信机房,CN2线路,5M带宽,自动化开通上架,最低499元/月,配置是L5630*2/16G内存/120G SSD硬盘。DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,...
sockaddr为你推荐
qq云手写面板为什么我的QQ云手写面板经常转换失效windows7正版验证Win7正版验证方法有哪些?java学习思维导图优秀好用的免费流程图与思维导图绘制工具有哪些,最好mac下和windows下都可以用。免流量是什么意思4g手机浏览器免流量是什么意思qq空间个性域名Qq空间的个性域名是什么意思。iphone12或支持北斗导航iphone12是问题机吗淘气鸟松鸦是否会说话?magento2MRP与MRP2的区别呼叫中心搭建如何建立适合自己的呼叫中心windows7系统要求windows7的系统盘要求最低是多少
海外虚拟主机空间 抗投诉vps主机 中国域名交易中心 enom singlehop vps.net 163网 域名优惠码 sockscap sub-process 512au web服务器架设软件 电信虚拟主机 天翼云盘 国外ip加速器 免费私人服务器 腾讯总部在哪 阿里云个人邮箱 mteam phpinfo 更多