i had created a client server program in MFC using TCP but by doing this the server can only work on one computer because you have to tell the client the ip address to connect to i.e
Code:
 ServerAddr.sin_addr.s_addr = inet_addr("10.13.31.112");
so i want to change my code so that i can use broadcasting but i found out that it only works using UDP. I tried changing the code but the error message "error with sendto: 10047" displays when i run the program.
that error means
Address family not supported by protocol family. An address incompatible with the requested protocol was used. All sockets are created with an associated address family (that is, AF_INET for Internet Protocols) and a generic protocol type (that is, SOCK_STREAM). This error is returned if an incorrect protocol is explicitly requested in the socket call, or if an address of the wrong family is used for a socket, for example, in sendto.
here is the code from server:
Code:
WSADATA wsaData; 
	WSAStartup(MAKEWORD(2,2), &wsaData);

	int port = 7171;
	if (param)
		port = reinterpret_cast<short>(param);

	SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (s == -1)
	{
		closesocket(s);
		return 1;
	}

	sockaddr_in brdcastaddr;
	int len = sizeof(brdcastaddr);
    char sbuf[1024]; 
	brdcastaddr.sin_family = AF_INET;
	brdcastaddr.sin_port = htons(port);
	brdcastaddr.sin_addr.s_addr = htonl(INADDR_ANY);
	
	char opt = 1; 

	int bind_ret = bind(s, (sockaddr*)&brdcastaddr, sizeof(brdcastaddr));           
	if (bind_ret == -1)
	{
		CString text;
		text.Format(_T("ERROR binding: %d"), WSAGetLastError());
		AfxMessageBox(text);
		closesocket(s);
		return 1;
	}

    setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&opt, sizeof(char));
	memset(&brdcastaddr,0, sizeof(brdcastaddr));


	int ret = sendto(s, sbuf, strlen(sbuf), 0, (sockaddr*)&brdcastaddr, len);
    if(ret < 0)
    {
		CString text;
		text.Format(_T("ERROR with sendto: %d"), WSAGetLastError());
		AfxMessageBox(text);
        return 1;
    }

	int listen_ret = listen(s, 5); 
	if (listen_ret == -1)
	{
		CString text;
		text.Format(_T("ERROR listening: %d"), WSAGetLastError());
		AfxMessageBox(text);
		closesocket(s);
		return 1;
	}

	while (true)
	{
		sockaddr_in client_addr;
		int len = sizeof(client_addr);
		SOCKET client_sock = accept(s, (sockaddr*)&client_addr, &len);
	
		ClientInfo info;
		info.sock = client_sock;
		info.addr = inet_ntoa(client_addr.sin_addr);
		{
			Mutex<CriticalSection>::Lock lock(client_cs);
			clients.push_back(info);
		}

		unsigned tid;
		_beginthreadex(NULL, 0, tcp_servers_client, reinterpret_cast<void*>(client_sock), 0, &tid);
	}

	closesocket(s);
	return 0;