-
March 20th, 2013, 10:41 AM
#1
how to add broadcast to UDP?
so i found a very basic UDP program in c++ console application where the client can send messages to the server, the server receives them and sends them back. but the ip address the client has to connect to is 127.0.0.1. how can i change this code to broadcast? i know i have to use INADDR_BROADCAST but the program doesn't work if i just put INADDR_BROADCAST instead of the ip address so what else do i need to add/change?
server:
Code:
void InitWinsock()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
}
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET socketS;
InitWinsock();
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen = sizeof(from);
local.sin_family = AF_INET;
local.sin_port = htons(1234);
local.sin_addr.s_addr = INADDR_ANY;
socketS = socket(AF_INET,SOCK_DGRAM,0);
bind(socketS,(sockaddr*)&local,sizeof(local));
while (1)
{
char buffer[1024];
ZeroMemory(buffer, sizeof(buffer));
printf("Waiting...\n");
if (recvfrom(socketS,buffer,sizeof(buffer),0,(sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
{
printf("Received message from %s: %s\n",inet_ntoa(from.sin_addr), buffer);
sendto(socketS, buffer, sizeof(buffer), 0, (sockaddr*)&from, fromlen);
}
Sleep(500);
}
closesocket(socketS);
return 0;
}
client:
Code:
void InitWinsock()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
}
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET socketC;
InitWinsock();
struct sockaddr_in serverInfo;
int len = sizeof(serverInfo);
serverInfo.sin_family = AF_INET;
serverInfo.sin_port = htons(1234);
serverInfo.sin_addr.s_addr = inet_addr("127.0.0.1");
socketC = socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
char buffer[1024];
ZeroMemory(buffer, sizeof(buffer));
printf("Please input your message: ");
scanf("%s", buffer);
if (strcmp(buffer,"exit") == 0)
break;
if (sendto(socketC, buffer, sizeof(buffer), 0, (sockaddr*)&serverInfo, len) != SOCKET_ERROR)
{
if (recvfrom(socketC, buffer, sizeof(buffer), 0, (sockaddr*)&serverInfo, &len) != SOCKET_ERROR)
{
printf("Receive response from server: %s\n", buffer);
}
}
}
closesocket(socketC);
return 0;
}
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|