X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=old%2Fudp_rcv.c;fp=old%2Fudp_rcv.c;h=1fa5fab85ca9e789fd013f318ee04f74eb11982e;hb=0e2dd277897f8959e363564b91dd7d098fb4873c;hp=0000000000000000000000000000000000000000;hpb=6b894156a6cd304f35a959d4388dfb1e1342e844;p=my-code%2Fivac.git diff --git a/old/udp_rcv.c b/old/udp_rcv.c new file mode 100644 index 0000000..1fa5fab --- /dev/null +++ b/old/udp_rcv.c @@ -0,0 +1,76 @@ +/* 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 + +#define MAX_BUF 1472 + +int main(int argc, char *argv[]) { + int receive_fd; + int opt; + struct sockaddr_in local_addr,target_addr; + int receive_bytes, write_bytes; + socklen_t target_addr_len; + unsigned char buf[MAX_BUF]; + + if(argc!=2) { + 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); + } + + 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[1])); + target_addr.sin_addr.s_addr=inet_addr(argv[1]); + target_addr_len=sizeof(target_addr); + */ + + receive_bytes=1; + while(receive_bytes>0) { + 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; +}