jamesbon
October 29th, 2010, 04:01 AM
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
#define REQUEST 10
#define REPLY 10
int main(int argc,char *argv[]){
struct sockaddr_in serv;
char request[REQUEST],reply[REPLY];
int sockfd,n;
if(argc!=2)
err_quit("usage: udpcli <IP add of server>");
if((sockfd =socket(PF_INET,SOCK_DGRAM,0))<0)
err_sys("socket error");
memset(&serv,0,sizeof(serv));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = inet_addr(argv[1]);
serv.sin_port = htons(UDP_SERV_PORT);
if(sendto(sockfd,request,REQUEST,0,(SA),&serv,sizeof(serv))!=REQUEST)
err_sys("sendto error");
if((n=recvfrom(sockfd,reply,REPLY,0,(SA)NULL,(int *)NULL))<0)
err_sys("recvfrom error");
exit(0);
}
Above is a code for UDP server which I am trying.
When I compile it I get following errors
udpserver.c: In function ‘main’:
udpserver.c:18: warning: incompatible implicit declaration of built-in function ‘memset’
udpserver.c:21: error: ‘UDP_SERV_PORT’ undeclared (first use in this function)
udpserver.c:21: error: (Each undeclared identifier is reported only once
udpserver.c:21: error: for each function it appears in.)
udpserver.c:22: error: ‘SA’ undeclared (first use in this function)
udpserver.c:22: warning: passing argument 6 of ‘sendto’ makes integer from pointer without a cast
/usr/include/sys/socket.h:155: note: expected ‘socklen_t’ but argument is of type ‘struct sockaddr_in *’
udpserver.c:22: error: too many arguments to function ‘sendto’
Any suggestions.
#include<sys/socket.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
#define REQUEST 10
#define REPLY 10
int main(int argc,char *argv[]){
struct sockaddr_in serv;
char request[REQUEST],reply[REPLY];
int sockfd,n;
if(argc!=2)
err_quit("usage: udpcli <IP add of server>");
if((sockfd =socket(PF_INET,SOCK_DGRAM,0))<0)
err_sys("socket error");
memset(&serv,0,sizeof(serv));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = inet_addr(argv[1]);
serv.sin_port = htons(UDP_SERV_PORT);
if(sendto(sockfd,request,REQUEST,0,(SA),&serv,sizeof(serv))!=REQUEST)
err_sys("sendto error");
if((n=recvfrom(sockfd,reply,REPLY,0,(SA)NULL,(int *)NULL))<0)
err_sys("recvfrom error");
exit(0);
}
Above is a code for UDP server which I am trying.
When I compile it I get following errors
udpserver.c: In function ‘main’:
udpserver.c:18: warning: incompatible implicit declaration of built-in function ‘memset’
udpserver.c:21: error: ‘UDP_SERV_PORT’ undeclared (first use in this function)
udpserver.c:21: error: (Each undeclared identifier is reported only once
udpserver.c:21: error: for each function it appears in.)
udpserver.c:22: error: ‘SA’ undeclared (first use in this function)
udpserver.c:22: warning: passing argument 6 of ‘sendto’ makes integer from pointer without a cast
/usr/include/sys/socket.h:155: note: expected ‘socklen_t’ but argument is of type ‘struct sockaddr_in *’
udpserver.c:22: error: too many arguments to function ‘sendto’
Any suggestions.