| 98 | } |
| 99 | |
| 100 | int |
| 101 | UDPMessaging::createSocketClientUDP(ComData* udp_data) |
| 102 | { |
| 103 | int si_sts = RET_OK; |
| 104 | |
| 105 | int sock = 0; |
| 106 | int i; |
| 107 | |
| 108 | for (i = udp_data->si_retry_; i >= 0; i--) { |
| 109 | memset((char *) (&(connect_UDP_)), 0, sizeof (struct sockaddr_in)); |
| 110 | |
| 111 | connect_UDP_.sin_family = AF_INET; |
| 112 | connect_UDP_.sin_addr.s_addr = htonl(udp_data->sj_addr_); |
| 113 | connect_UDP_.sin_port = htons(udp_data->si_port_); |
| 114 | |
| 115 | if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) |
| 116 | si_sts = -1; |
| 117 | else |
| 118 | break; |
| 119 | } |
| 120 | |
| 121 | if (i < 0) |
| 122 | return (-1); |
| 123 | else |
| 124 | if (si_sts == RET_OK){ |
| 125 | int broadcast=1; |
| 126 | setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof broadcast); |
| 127 | udp_data->si_socket_ = sock; |
| 128 | } |
| 129 | return (si_sts); |
| 130 | } |
| 131 | |
| 132 | int |
| 133 | UDPMessaging::receiveFromSocketUDP(ComData* udp_data) |