LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 621|回复: 5

一个网络编程的问题,多谢!

[复制链接]
发表于 2004-7-3 08:57:58 | 显示全部楼层 |阅读模式
我有段代码是这样:
...(省略一些代码)
int address_size;
int temp_sock_descriptor;
int sockaddr_in sin;
int sockaddr_in pin;
int sock_descriptor;
sock_descriptor=socket(AF_INET, SOCK_STREAM,0);
...(省略了一些代码)
while(1) {
        address_size=sizeof(struct sockaddr_in);
        temp_sock_descriptor =
            accept(sock_descriptor, (struct sockaddr *)&pin,
                   &address_size);
....(省略一些代码)
}
我发现adress_size=sizeof(sruct sockaddr_in)
有和没有对程序都没有影响,结果都对,请问这是怎么回事???谢谢!
发表于 2004-7-3 14:59:59 | 显示全部楼层
accept的第三个参数是返回的第二个参数的长度,不需要初始化。
发表于 2004-7-3 21:38:14 | 显示全部楼层
好象不对吧?
accept先根据len的长度将pin传给内核
内核修改pin后,将它的长度写入&len,传给进程
发表于 2004-7-6 10:13:20 | 显示全部楼层
也许未初始化的address_size初值正好大于所需的长度
发表于 2004-7-6 20:22:28 | 显示全部楼层
unp volumne 1
P63 Value-result argument
 楼主| 发表于 2004-7-8 14:42:18 | 显示全部楼层
能详细说说吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表