X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=dgramrcv.c;fp=dgramrcv.c;h=060fd4a6a595c4946b14bcca0775fc13951a7452;hb=fa6a332e18a1ed735e380d1d2081f5778009d6ab;hp=0000000000000000000000000000000000000000;hpb=3cc99313fc75043c07720bf64e5ac76496057864;p=my-code%2Fivac.git diff --git a/dgramrcv.c b/dgramrcv.c new file mode 100644 index 0000000..060fd4a --- /dev/null +++ b/dgramrcv.c @@ -0,0 +1,66 @@ +/* dgramrcv.c - receive from udp server + * + * author: hackbard + * + */ + +#include +#include + +/* memset */ +#include + +/* socket and bind stuff */ +#include +#include + +/* sockkaddr_in */ +#include + +/* inet_ntoa ... */ +#include + +/* errno stuff ... */ +#include + +/* read, close */ +#include + +int main(int argc, char *argv[]) { + int receive_fd; + struct sockaddr_in target_addr; + int receive_bytes, write_bytes; + socklen_t target_addr_len,optlen; + + if(argc!=3) { + printf("usage: %s \n",argv[0]); + exit(1); + } + + if((receive_fd=socket(AF_INET,SOCK_DGRAM,0)) == -1) { + printf("can't open socket.\n"); + exit(1); + } + + optlen=1; + setsockopt(receive_fd,SOL_SOCKET,SO_BROADCAST,NULL,optlen); + + memset(&target_addr,0,sizeof(target_addr)); + target_addr.sin_family=AF_INET; + target_addr.sin_port=htons(atoi(argv[2])); + target_addr.sin_addr.s_addr=inet_addr(argv[1]); + target_addr_len=sizeof(target_addr); + + receive_bytes=1; + while(receive_bytes>0) { + unsigned char buf[1000]; + receive_bytes=recvfrom(receive_fd,buf,sizeof(buf),0,(struct sockaddr *)&target_addr,&target_addr_len); + write_bytes=write(1,buf,receive_bytes); + } + + close(receive_fd); + printf("connection closed ...\n"); + printf("%d from %d total bytes written.\n",write_bytes,receive_bytes); + + return 0; +}