|
Hi strider u made few small mistakes in ur program that I'm listing down:
1) U need not convert INADDR_ANY to network long
2) In client side u may use inet_aton() to convert client IP address (that u have taken as 127.0.0.1) to in_addr struct
Apart from above I would also like to suggest u two more things that might b helpful
1) In ur server side prog u have used server structure (sockaddr_in server) to store server address as well as the address of connecting clients in 2nd last arg of recvfrom()
2) U can avoid warnings if u type cast pointer to sockaddr_in structure to sockaddr* in bind,sendto and recvfrom.
Now I enlist the rectified code
//server
main()
{
int sd;
struct sockaddr_in server,clients;
char buf[512];
int rc,len;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(1234);
sd = socket (AF_INET,SOCK_DGRAM,0);
if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
printf("error\n");
else
printf("ok\n");
len=sizeof(clients);
printf("check\n");
printf("check1\n");
rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
printf("check2\n");
buf[rc]= '\0';
printf("Received: %s\n", buf);
return 0;
}
//client
main()
{
int sd,a;
struct sockaddr_in server;
sd = socket (AF_INET,SOCK_DGRAM,0);
server.sin_family = AF_INET;
inet_aton("127.0.0.1",&(server.sin_addr));
server.sin_port = htons(1234);
a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
printf("sent=%d\n",a);
exit(0);
}
Code:
//server
main()
{
int sd;
struct sockaddr_in server,clients;
char buf[512];
int rc,len;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(1234);
sd = socket (AF_INET,SOCK_DGRAM,0);
if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
printf("error\n");
else
printf("ok\n");
len=sizeof(clients);
printf("check\n");
printf("check1\n");
rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
printf("check2\n");
buf[rc]= '\0';
printf("Received: %s\n", buf);
return 0;
}
//client
main()
{
int sd,a;
struct sockaddr_in server;
sd = socket (AF_INET,SOCK_DGRAM,0);
server.sin_family = AF_INET;
inet_aton("127.0.0.1",&(server.sin_addr));
server.sin_port = htons(1234);
a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
printf("sent=%d\n",a);
exit(0);
}
-->
Code:
//server
main()
{
int sd;
struct sockaddr_in server,clients;
char buf[512];
int rc,len;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(1234);
sd = socket (AF_INET,SOCK_DGRAM,0);
if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
printf("error\n");
else
printf("ok\n");
len=sizeof(clients);
printf("check\n");
printf("check1\n");
rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
printf("check2\n");
buf[rc]= '\0';
printf("Received: %s\n", buf);
return 0;
}
//client
main()
{
int sd,a;
struct sockaddr_in server;
sd = socket (AF_INET,SOCK_DGRAM,0);
server.sin_family = AF_INET;
inet_aton("127.0.0.1",&(server.sin_addr));
server.sin_port = htons(1234);
a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
printf("sent=%d\n",a);
exit(0);
}
Tell me if this worked for u or not esp. because i've tested it on Linux.
|