Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //server code for creating and handling socket from
- //lines 3-53
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #define BUFFER_SIZE 1024
- #define on_error(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr); exit(1); }
- int main (int argc, char *argv[]) {
- //use port 23 instead of a port specified by a user
- int port = 23;
- FILE *stream;
- int server_fd, client_fd, err, size;
- struct sockaddr_in server, client;
- char buf[BUFFER_SIZE], ret[BUFFER_SIZE];
- server_fd = socket(AF_INET, SOCK_STREAM, 0);
- if (server_fd < 0) on_error("Could not create socket\n");
- server.sin_family = AF_INET;
- server.sin_port = htons(port);
- server.sin_addr.s_addr = htonl(INADDR_ANY);
- int opt_val = 1;
- setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt_val, sizeof opt_val);
- err = bind(server_fd, (struct sockaddr *) &server, sizeof(server));
- if (err < 0) on_error("Could not bind socket\n");
- err = listen(server_fd, 128);
- if (err < 0) on_error("Could not listen on socket\n");
- printf("Server is listening on %d\n", port);
- while (1) {
- socklen_t client_len = sizeof(client);
- client_fd = accept(server_fd, (struct sockaddr *) &client, &client_len);
- printf("Establishing connection with client...\n");
- if (client_fd < 0) on_error("Could not establish new connection\n")
- else printf("Connection established on port %d\n", port);
- while (1) {
- int read = recv(client_fd, buf, BUFFER_SIZE, 0);
- if (!read) break;
- if (read < 0) on_error("Client read failed\n");
- /*
- err = send(client_fd, buf, read, 0);
- if (err < 0) on_error("Client write failed\n");
- */
- printf("%s", buf);
- strncat(buf, "", 1);
- stream = popen("ls", "r"); //this is temporary until i figure out why the server wont process input properly
- while (fgets(buf, BUFFER_SIZE, stream) != NULL) {
- write(client_fd, stream, BUFFER_SIZE);
- }
- pclose(stream);
- //err = send(client_fd, buf, read, 0);
- //if (err < 0) on_error("Client write failed\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement