return count;
}
-int network_udp_listen_init(t_net *net,int port) {
+int network_udp_listen_init(t_net *net) {
struct sockaddr_in addr;
+ int true;
if((net->l_udp_fd=socket(AF_INET,SOCK_DGRAM,0))==-1) {
perror("[network] socket call (udp-receive)");
addr.sin_port=htons(net->l_udp_port);
addr.sin_addr.s_addr=INADDR_ANY;
if(bind(net->l_udp_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1) {
- perror("[network] bind call (udp)");
- return N_ERROR;
+ /* try harder ... */
+ true=1;
+ if(setsockopt(net->l_udp_fd,SOL_SOCKET,SO_REUSEADDR,
+ &true,sizeof(true))==-1) {
+ perror("[network] setsockopt call (udp)");
+ return N_ERROR;
+ }
+ puts("[network] reused address (udp)");
}
printf("[network] listening on port %d (udp)\n",net->l_udp_port);
return N_SUCCESS;
}
-int network_set_udp_ports(t_net *net,int port) {
-
- net->l_udp_port=port;
-
- return N_SUCCESS;
-}
-
int network_udp_receive(t_net *net,int channel, unsigned char *data,int count) {
struct sockaddr_in addr;