X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=stream.c;h=da6cc47a1f0eb92ad5e110ca576c6156b7f0a8c4;hb=afeae6873ce38f8e98c0b2f28233ca02b61f05a0;hp=09916112b727109b70e1f68c354d82ccabb15bb5;hpb=d85aa3d936d20cc0a7f34cb79ee558328a925af7;p=my-code%2Fivac.git diff --git a/stream.c b/stream.c index 0991611..da6cc47 100644 --- a/stream.c +++ b/stream.c @@ -23,9 +23,13 @@ /* errno stuff ... */ #include +/* read, close */ +#include + int main(int argc, char *argv[]) { int listen_fd, send_fd; - struct sockaddr_in local_addr, *remote_addr; + struct sockaddr_in local_addr, remote_addr; + socklen_t remote_addr_len; int send_bytes, read_bytes; if(argc!=2) { @@ -33,18 +37,17 @@ int main(int argc, char *argv[]) { exit(1); } - if(listen_fd=socket(AF_INET,SOCK_STREAM,0) == -1) { + if((listen_fd=socket(AF_INET,SOCK_STREAM,0)) == -1) { printf("can't open socket.\n"); exit(1); } - + + memset(&local_addr,0,sizeof(local_addr)); local_addr.sin_family=AF_INET; - // local_addr.sin_port=htons(atoi(argv[1])); - local_addr.sin_port=htons(1025); + local_addr.sin_port=htons(atoi(argv[1])); local_addr.sin_addr.s_addr=htonl(INADDR_ANY); - memset((void *)&(local_addr.sin_zero),'\0',8); - if(bind(listen_fd,&local_addr,sizeof(struct sockaddr))==-1) { + if(bind(listen_fd,(struct sockaddr *)&local_addr,sizeof(local_addr))==-1) { printf("unable to bind on port %d.\n",atoi(argv[1])); perror("bind"); exit(1); @@ -55,17 +58,18 @@ int main(int argc, char *argv[]) { exit(1); } - if(send_fd=accept(listen_fd,(struct sockaddr *)remote_addr, - sizeof(struct sockaddr_in))!=-1) { + remote_addr_len=sizeof(remote_addr); + if((send_fd=accept(listen_fd,(struct sockaddr *)&remote_addr, + &remote_addr_len))!=-1) { printf("accepting connection from %s port %d.\n", - inet_ntoa(remote_addr->sin_addr), - ntohs(remote_addr->sin_port)); + inet_ntoa(remote_addr.sin_addr), + ntohs(remote_addr.sin_port)); /* send stuff .... */ read_bytes=1; while(read_bytes>0) { - char buf[1000]; - read_bytes=read(stdin,(void *)buf,sizeof(buf)); + unsigned char buf[1000]; + read_bytes=read(0,buf,sizeof(buf)); send_bytes=send(send_fd,buf,sizeof(buf),0); }