我想知道是否可以管理指向套接字udp文件描述符的指针,因为我必须同时将send()数据发送到2个不同的套接字。
我有一个创建2个套接字的函数(socket()setsocket()bind()connect()...) 和另一个更改套接字(如果一个条件为真,但我不写这部分)
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,但我的代码会出现分段错误,所以我不确定这种方法是否正确或可行。 谢谢你的建议
答案 0 :(得分:1)
你完成它的方式不起作用,因为&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);