diff options
| author | iceyrazor <iceyrazor@mailfence.com> | 2026-09-25 21:33:11 -0500 |
|---|---|---|
| committer | iceyrazor <iceyrazor@mailfence.com> | 2026-09-25 21:33:11 -0500 |
| commit | 817a3b2422c7966fc0ae47ba7ebfbd086792471c (patch) | |
| tree | 622bfd9e4fcc45feab7cf4aea36762492f1c9940 /src/client-polled.c | |
init
Diffstat (limited to 'src/client-polled.c')
| -rwxr-xr-x | src/client-polled.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/client-polled.c b/src/client-polled.c new file mode 100755 index 0000000..9a88436 --- /dev/null +++ b/src/client-polled.c @@ -0,0 +1,71 @@ +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <poll.h> +#include "iceys-utils.c" + +#define SA(ptr) ((struct sockaddr *)(ptr)) + +int main(int argc, char *argv[]){ + if (argc<2){ + fprintf(stderr, "arg1 must be set for port\n"); + exit(-1); + } + int port = atoi(argv[1]); + if (port == 0) { + fprintf(stderr, "port must not be 0\n"); + exit(-1); + } + + int socketfd = socket(AF_INET, SOCK_STREAM, 0); + + + struct sockaddr_in address = {0}; + address.sin_family = AF_INET; + address.sin_port = htons(port); + address.sin_addr.s_addr = inet_addr("127.0.0.1"); + + + int con_err=connect(socketfd, SA(&address), sizeof(address)); + if (con_err<0){ + printf("connect error %d\n",con_err); + perror("socketfd error"); + exit(-1); + } + + struct pollfd fds[2] = { + { + 0, + POLLIN, + 0 + }, + { + socketfd, + POLLIN, + 0 + } + }; + + + for (;;){ + char buffer[30000]={0}; + poll(fds, 2, 50000); + + if (fds[0].revents & POLLIN) { + read(0, buffer, 30000); + send(socketfd, buffer, 30000, 0); + } else if(fds[1].revents & POLLIN){ + //if(read(socketfd,buffer,30000)<0){ printf("\nREAD FAILED\n\n"); close(new_socket); break; } + if(recv(socketfd, buffer, 30000, 0)==0){ + printf("recv got 0 --client\n\n"); + exit(1); + } + printf("%s\n",buffer); + + } + } + + return 0; +} |
