永发信息网

关于 sockadd 和 sockadd_in的 问题

答案:2  悬赏:20  手机版
解决时间 2021-02-11 13:51
以下是百度文库上的代码
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define BACKLOG 10
main()
{
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket创建出错!"); exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
perror("bind出错!");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1) {
perror("listen出错!");
exit(1);
}

我不太清楚的地方在 bing()函数的时候 为什么上面声明的sockaddr_in my_addr类型 并且也赋值了 但是在bing函数的时候第二个参数和第三个参数却又用了sockaddr?

1楼大哥 我就是不知道为什么在前面进行了给sockaddr_in的成员赋值 后面在用bing()的时候反而不用了这个结构了 用一个没有赋值的机构体 这是为什么? 是因为sockaddr和sockaddr_in之间的指针可以互相转换?他们的首地址可以转换?如果这样的话 那sockadd_in的sizeof应该比sockadd的sizeof大啊 不解不解
最佳答案
bind(int sockfd, struct sockaddr * sap, size_t n)
一共三个参数,作用是将sockfd对应的socket和sockaddr sap对应起来,自然参数1和参数2是必须的。

而参数3,因为c语言是按值传递的,参数2是一个指针,bind函数内部不知道sap的长度,所以需要传递参数3.
全部回答
你好! 你的串号我已经记下,采纳后我会帮你制作 记得给问豆啊!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样说明甲数除以乙数,等于甲数乘乙数的倒数
小岩子头在什么地方啊,我要过去处理事情
过早不食 早上一杯蔬菜粥 中午一个苹果 晚上
我的膝盖摔伤了,结痂后用手扣掉了,然后又结
求粒子群算法C#版?
临沂到五台山开车需要多久?
车二次抵押是什么意思
旺园超市在什么地方啊,我要过去处理事情
甘油和氨基酸分别是由什么营养物质分解而来?
硅藻纯什么牌好呢?那么多品牌,谁能说一下。
92毕业论文网 是真的代做设计吗 有人让他代做
/这瓶就多少钱
AMDE1-2500APU是什么处理器
王者荣耀宫本的弱点是什么?
佳兴便利超市这个地址在什么地方,我要处理点
推荐资讯
开空调窗上水蒸汽怎么办
高中和职高有什么区别
昌乐县体育局地址在哪,我要去那里办事
昔孟母择邻处 子不学断机杼包括哪两个关于孟
“养”一架私人飞机需要多少钱
为啥GTX1070玩战地1开中画质很卡
起亚k2后刹车锅里的刹车片咋装
黑丝铺 账号 求黑丝铺vip帐号 100分
你能为我打开你双腿我要败在你的双腿下 什么
求阿迪真假
胸型散有点靠两边怎么办,可以通过什么
庄头村这个地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?