gpt4 book ai didi

c - 管理指向套接字文件描述符的指针

转载 作者:行者123 更新时间:2023-11-30 15:50:19 24 4
gpt4 key购买 nike

我想知道是否可以管理指向套接字 udp 文件描述符的指针,因为我必须同时使用 send() 向 2 个不同的套接字发送数据。

我有一个创建 2 个套接字的函数 (socket() setsocket() bind() connect()... )另一个改变套接字(如果一个条件为 true ,但我没有写这部分)

  void set_socket(){                                    
socket00 = socket(AF_INET, SOCK_DGRAM, 0);
socket01 = socket(AF_INET, SOCK_DGRAM, 0);
...
setsocket();
setsocket();
....
....
}


int change_socketfd (int fd) {
if (fd == socket01 ) {
return ( socket00 );
}
else if (fd == socket00 ) {
return ( socket01 );
}
}

我可以有一个这样的指针吗?

    int *psock;
psock=&change_socketfd(socket00);
ris = send(*psock, datagram, sizeof(*datagram)+1 , 0);

我需要的是动态改变socketfd,但是我的代码给出了段错误,所以我不确定这个方法是否正确或可能。感谢您的建议

最佳答案

您完成此操作的方式将不起作用,因为 &change_socketfd(socket00) 为其提供了返回值的地址,该地址仅暂时存在。我不明白为什么这不能满足您的要求:

int psock;
psock = change_socketfd(socket00);
ris = send(psock, datagram, sizeof(*datagram)+1 , 0);

如果你确实需要它作为一个指针,那么试试这个:

int *psock = malloc(sizeof(int*));
*psock = change_socketfd(socket00);
ris = send(*psock, datagram, sizeof(*datagram)+1 , 0);

...
//When you're finished with psock
free(psock);

关于c - 管理指向套接字文件描述符的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com