Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _GNU_SOURCE
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #define BUF 1024
- #define PORT 6543
- int main (int argc, char **argv) {
- int create_socket;
- char buffer[BUF];
- struct sockaddr_in address;
- int size;
- int err = 0;
- char port_to_int[BUF]; //Umwandlung in integer (bei Porteingabe)
- int count; //variable um zum nästen zeichen zu kommen
- int strsize, lines;
- //Eingabe der Argumente ServerIP & Port
- if( argc < 3 ){
- printf("Usage: %s ServerAdresse Port\n", argv[0]);
- exit(EXIT_FAILURE);
- }
- //Port in Integer umwandeln
- strcpy(port_to_int,argv[2]);
- for(count=0;count<(int)strlen(port_to_int);count++)
- {
- if(!isdigit(port_to_int[count]))
- {
- err++;
- }
- }
- if(err > 0)
- {
- printf("Nur Zahlen beim Port eingeben\n");
- exit(EXIT_FAILURE);
- }
- //PORT = atoi(port_to_int);
- //Socket oeffnen
- if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) == -1)
- {
- perror("Socket error");
- return EXIT_FAILURE;
- }
- //Serveradresse initialisieren
- memset(&address,0,sizeof(address));
- address.sin_family = AF_INET;
- address.sin_port = htons (PORT);
- inet_aton (argv[1], &address.sin_addr);
- //Verbinden
- if (connect ( create_socket, (struct sockaddr *) &address, sizeof (address)) == 0)
- {
- printf ("Erfolgreich mit Server %s verbunden. Port: %d\n", inet_ntoa (address.sin_addr), PORT);
- size=recv(create_socket,buffer,BUF-1, 0);
- if (size>0)
- {
- buffer[size]= '\0';
- printf("%s",buffer);
- }
- }
- else
- {
- perror("Connect error - no server available");
- return EXIT_FAILURE;
- }
- do {
- //printf ("Send message: ");
- fgets (buffer, BUF, stdin);
- if(strcmp(buffer,"LIST\n") == 0)
- {
- //LIST Befehl an server üagen
- send(create_socket, buffer, strlen (buffer), 0);
- //Antwort vom Server
- size = recv(create_socket, &lines, sizeof(int), 0);
- if (size < 4)
- lines = 0;
- for (; lines; --lines)
- {
- size = recv(create_socket, &strsize, sizeof(strsize), 0);
- if (size > 0)
- {
- size=recv(create_socket,buffer,strsize, 0);
- if (size>0)
- {
- buffer[size] = '\0';
- printf("%s", buffer);
- }
- }
- }
- }
- else if(strcmp(buffer,"GET\n") == 0)
- {
- //GET command to the server
- send(create_socket, buffer, strlen (buffer), 0);
- }
- else
- {
- printf("Es werden nur folgende Befehle erkannt: LIST, GET und QUIT\nBitte erneut versuchen\n");
- }
- }while (strcmp (buffer, "QUIT\n") != 0);
- close (create_socket);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment