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.
Digital-VM商家目前也在凑热闹的发布六月份的活动,他们家的机房蛮多的有提供8个数据中心,包括日本、洛杉矶、新加坡等。这次六月份的促销活动全场VPS主机六折优惠。Digital-VM商家还是有一点点特点的,有提供1Gbps和10Gbps带宽的VPS主机,如果有需要大带宽的VPS主机可以看看。第一、商家优惠码优惠码:June40全场主机六折优惠,不过仅可以月付、季付。第二、商家VPS主机套餐1...
亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括B...
hostround怎么样?大硬盘服务器,高防服务器。hostround,美国商家,2017年成立,正规注册公司(Company File #6180543),提供虚拟主机、VPS云主机、美国服务器、荷兰服务器租用等。现在有1款特价大硬盘独服,位于达拉斯,配置还不错,本月订购时包括免费 500Gbps DDoS 保护,有兴趣的可以关注一下。点击直达:hostround官方网站地址美国\荷兰独立服务器...
sockaddr为你推荐
百度创业史百度能创业成功的原因是什么vs2005快捷键VS2005的快捷方式是哪个文件啊?linux操作系统好吗linux系统好不好学??罗振宇2017跨年演讲有时候拼命奔跑,只是为了留在原地是什么意思音响解码音响功放:源码输出和解码输出有什么区别qq空间克隆素材qq空间克隆微软永久关闭实体店如何注销微软账户计算机编程基础学习电脑编程应该有什么基础?盈科oa办公系统OA办公设备主要有哪些?该怎样安装和维护、。湖北健康码转码申请坐火车途经疫区健康码会变吗?
服务器空间租用 天津虚拟主机 高防直连vps 免费二级域名申请 东莞电信局 burstnet 电影服务器 linode代购 美元争夺战 java主机 rak机房 淘宝双十一2018 lighttpd 牛人与腾讯客服对话 空间论坛 135邮箱 1g内存 1美金 gtt drupal安装 更多