X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=dgramrcv.c;h=d235b660f590ea1e602f23bd4efc32854666d393;hb=004afa69cde9beb0216cd235f90a54fde29cc475;hp=060fd4a6a595c4946b14bcca0775fc13951a7452;hpb=fa6a332e18a1ed735e380d1d2081f5778009d6ab;p=my-code%2Fivac.git diff --git a/dgramrcv.c b/dgramrcv.c index 060fd4a..d235b66 100644 --- a/dgramrcv.c +++ b/dgramrcv.c @@ -28,12 +28,13 @@ int main(int argc, char *argv[]) { int receive_fd; - struct sockaddr_in target_addr; + int opt; + struct sockaddr_in local_addr,target_addr; int receive_bytes, write_bytes; - socklen_t target_addr_len,optlen; + socklen_t target_addr_len; - if(argc!=3) { - printf("usage: %s \n",argv[0]); + if(argc!=2) { + printf("usage: %s \n",argv[0]); exit(1); } @@ -42,12 +43,17 @@ int main(int argc, char *argv[]) { exit(1); } - optlen=1; - setsockopt(receive_fd,SOL_SOCKET,SO_BROADCAST,NULL,optlen); + opt=1; + setsockopt(receive_fd,SOL_SOCKET,SO_BROADCAST,&opt,sizeof(opt)); + + local_addr.sin_family=AF_INET; + local_addr.sin_port=htons(atoi(argv[1])); + local_addr.sin_addr.s_addr=htonl(INADDR_ANY); + bind(receive_fd,(const struct sockaddr *)&local_addr,sizeof(local_addr)); memset(&target_addr,0,sizeof(target_addr)); target_addr.sin_family=AF_INET; - target_addr.sin_port=htons(atoi(argv[2])); + target_addr.sin_port=htons(atoi(argv[1])); target_addr.sin_addr.s_addr=inet_addr(argv[1]); target_addr_len=sizeof(target_addr);