X-Git-Url: https://www.hackdaworld.org/gitweb/?a=blobdiff_plain;f=old%2Fudp_send.c;fp=old%2Fudp_send.c;h=b81eb530fccb75f75e0711b60597fd468a7bc075;hb=0e2dd277897f8959e363564b91dd7d098fb4873c;hp=0000000000000000000000000000000000000000;hpb=6b894156a6cd304f35a959d4388dfb1e1342e844;p=my-code%2Fivac.git diff --git a/old/udp_send.c b/old/udp_send.c new file mode 100644 index 0000000..b81eb53 --- /dev/null +++ b/old/udp_send.c @@ -0,0 +1,90 @@ +/* datagram.c - datagram sockets 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 + +/* open */ +#include +#include + +#define MAX_BUF 1472 + +int main(int argc, char *argv[]) { + int send_fd,broadcast_on; + struct sockaddr_in local_addr, remote_addr; + socklen_t remote_addr_len,optlen; + int send_bytes, read_bytes; + unsigned char buf[MAX_BUF]; + + if(argc!=3) { + printf("usage: %s \n",argv[0]); + exit(1); + } + + if((send_fd=socket(AF_INET,SOCK_DGRAM,0)) == -1) { + printf("can't open socket.\n"); + exit(1); + } + + broadcast_on=1; + optlen=sizeof(broadcast_on); + if((setsockopt(send_fd,SOL_SOCKET,SO_BROADCAST,&broadcast_on,optlen))==-1) + perror("setsockopt"); + + + memset(&local_addr,0,sizeof(local_addr)); + local_addr.sin_family=AF_INET; + local_addr.sin_port=htons(atoi(argv[2])); + local_addr.sin_addr.s_addr=htonl(INADDR_ANY); + + if(bind(send_fd,(struct sockaddr *)&local_addr,sizeof(local_addr))==-1) { + printf("unable to bind on port %d.\n",atoi(argv[2])); + perror("bind"); + exit(1); + } + + remote_addr_len=sizeof(remote_addr); + memset(&remote_addr,0,sizeof(remote_addr)); + remote_addr.sin_family=AF_INET; + remote_addr.sin_port=htons(atoi(argv[2])); + remote_addr.sin_addr.s_addr=inet_addr(argv[1]); + + /* send stuff .... */ + read_bytes=1; + while(read_bytes>0) { + read_bytes=read(0,buf,sizeof(buf)); + send_bytes=sendto(send_fd,buf,read_bytes,0,(struct sockaddr *)&remote_addr,remote_addr_len); +#ifdef DEBUG + perror("sendto"); +#endif + } + + close(send_fd); + printf("connection closed ...\n"); + printf("%d from %d total bytes sent.\n",send_bytes,read_bytes); + + return 0; +}