- server.sin_port = htons(port);
- if (bind(sockfd,(struct sockaddr*)&server,sizeof(server)) < 0)
+#else
+ /* If we aren't built with ipv6, the choice becomes simple */
+ ((sockaddr_in*)servaddr)->sin_family = AF_INET;
+ if (*addr)
+ {
+ /* There is an address here. */
+ in_addr addy;
+ if (inet_pton(AF_INET, addr, &addy) < 1)
+ {
+ delete[] servaddr;
+ return false;
+ }
+ ((sockaddr_in*)servaddr)->sin_addr = addy;
+ }
+ else
+ {
+ /* Bind ipv4 to all */
+ ((sockaddr_in*)servaddr)->sin_addr.s_addr = htonl(INADDR_ANY);
+ }
+ /* Bind ipv4 port number */
+ ((sockaddr_in*)servaddr)->sin_port = htons(port);
+ size = sizeof(sockaddr_in);
+#endif
+ ret = SE->Bind(sockfd, servaddr, size);
+ delete[] servaddr;
+
+ if (ret < 0)