Server und Client SEND
This commit is contained in:
		
							
								
								
									
										104
									
								
								myclient.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										104
									
								
								myclient.c
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,104 @@
 | 
			
		||||
/* myclient.c */
 | 
			
		||||
#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>
 | 
			
		||||
#define BUF 1024
 | 
			
		||||
#define PORT 6543
 | 
			
		||||
 | 
			
		||||
int main (int argc, char **argv) {
 | 
			
		||||
  char* meinport = argv[2];
 | 
			
		||||
  int create_socket;
 | 
			
		||||
  char buffer[BUF];
 | 
			
		||||
  struct sockaddr_in address;
 | 
			
		||||
  int size;
 | 
			
		||||
 | 
			
		||||
  if( argc < 2 ){
 | 
			
		||||
     printf("Usage: %s ServerAdresse\n", argv[0]);
 | 
			
		||||
     exit(EXIT_FAILURE);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) == -1)
 | 
			
		||||
  {
 | 
			
		||||
     perror("Socket error");
 | 
			
		||||
     return EXIT_FAILURE;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  memset(&address,0,sizeof(address));
 | 
			
		||||
  address.sin_family = AF_INET;
 | 
			
		||||
  address.sin_port = htons (*meinport);
 | 
			
		||||
  inet_aton (argv[1], &address.sin_addr);
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  if (connect ( create_socket, (struct sockaddr *) &address, sizeof (address)) == 0)
 | 
			
		||||
  {
 | 
			
		||||
     printf ("Connection with server (%s) established\n", inet_ntoa (address.sin_addr));
 | 
			
		||||
     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;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
   int last = 0;
 | 
			
		||||
   int mode = 0;
 | 
			
		||||
   char bufferString[1024];
 | 
			
		||||
   do {
 | 
			
		||||
      char *p=getenv("USER");
 | 
			
		||||
      printf("\x1B[32m");
 | 
			
		||||
      printf("%s@%s:%d", p, inet_ntoa (address.sin_addr),ntohs(address.sin_port));
 | 
			
		||||
      if (strncmp (bufferString, "send", 4)  == 0 || mode == 1){
 | 
			
		||||
         switch (last)
 | 
			
		||||
         {
 | 
			
		||||
         case 0:
 | 
			
		||||
            last += 1;
 | 
			
		||||
            mode = 1;
 | 
			
		||||
            printf("\x1B[34m");
 | 
			
		||||
            printf("->SEND->Sender eingeben: \n");
 | 
			
		||||
            break;
 | 
			
		||||
         case 1:
 | 
			
		||||
            last += 1;
 | 
			
		||||
            printf("\x1B[34m");
 | 
			
		||||
            printf("->SEND->Empfänger eingeben: \n");
 | 
			
		||||
            break;
 | 
			
		||||
         case 2:
 | 
			
		||||
            last += 1;
 | 
			
		||||
            printf("\x1B[34m");
 | 
			
		||||
            printf("->SEND->Betreff eingeben: \n");
 | 
			
		||||
            break;
 | 
			
		||||
         case 3:
 | 
			
		||||
            last = 0;
 | 
			
		||||
            mode = 0;
 | 
			
		||||
            printf("\x1B[34m");
 | 
			
		||||
            printf("->SEND->Nachricht eingeben: \n");
 | 
			
		||||
            break;
 | 
			
		||||
         }    
 | 
			
		||||
      }else if (strncmp (bufferString, "list", 4)  == 0 ){
 | 
			
		||||
         printf("LIST wurde endlich erkannt!\n");
 | 
			
		||||
      }else if (strncmp (bufferString, "read", 4)  == 0 ){
 | 
			
		||||
         printf("READ wurde endlich erkannt!\n");
 | 
			
		||||
      } else if (strncmp (bufferString, "del", 4)  == 0 ){
 | 
			
		||||
         printf("DEL wurde endlich erkannt!\n");
 | 
			
		||||
      }
 | 
			
		||||
      printf("\033[0;33m");
 | 
			
		||||
      printf("$ ");
 | 
			
		||||
      printf("\x1B[37m");
 | 
			
		||||
      fgets (buffer, BUF, stdin);
 | 
			
		||||
      strcpy(bufferString, buffer);
 | 
			
		||||
      printf("%s", bufferString);
 | 
			
		||||
      send(create_socket, buffer, strlen (buffer), 0);
 | 
			
		||||
  } 
 | 
			
		||||
  while (strcmp (buffer, "quit\n") != 0);
 | 
			
		||||
  close (create_socket);
 | 
			
		||||
  return EXIT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										115
									
								
								myserver.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										115
									
								
								myserver.c
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
/* myserver.c */
 | 
			
		||||
#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>
 | 
			
		||||
#define BUF 1024
 | 
			
		||||
#define PORT 6543
 | 
			
		||||
 | 
			
		||||
int main (int argc, char **argv) {
 | 
			
		||||
  char* verzeichnis = argv[1];
 | 
			
		||||
  char* meinport = argv[2];
 | 
			
		||||
  printf("Mein server Verzeichniss: %s\n", verzeichnis);
 | 
			
		||||
  printf("Mein server Port: %s\n", meinport);
 | 
			
		||||
  int create_socket, new_socket;
 | 
			
		||||
  socklen_t addrlen;
 | 
			
		||||
  char buffer[BUF];
 | 
			
		||||
  int size;
 | 
			
		||||
  struct sockaddr_in address, cliaddress;
 | 
			
		||||
 | 
			
		||||
  create_socket = socket (AF_INET, SOCK_STREAM, 0);
 | 
			
		||||
 | 
			
		||||
  memset(&address,0,sizeof(address));
 | 
			
		||||
  address.sin_family = AF_INET;
 | 
			
		||||
  address.sin_addr.s_addr = INADDR_ANY;
 | 
			
		||||
  address.sin_port = htons (*meinport);
 | 
			
		||||
 | 
			
		||||
  if (bind ( create_socket, (struct sockaddr *) &address, sizeof (address)) != 0) {
 | 
			
		||||
     perror("bind error");
 | 
			
		||||
     return EXIT_FAILURE;
 | 
			
		||||
  }
 | 
			
		||||
  listen (create_socket, 5);
 | 
			
		||||
  
 | 
			
		||||
  addrlen = sizeof (struct sockaddr_in);
 | 
			
		||||
 | 
			
		||||
  while (1) {
 | 
			
		||||
     printf("Waiting for connections...\n");
 | 
			
		||||
     new_socket = accept ( create_socket, (struct sockaddr *) &cliaddress, &addrlen );
 | 
			
		||||
     if (new_socket > 0)
 | 
			
		||||
     {
 | 
			
		||||
        printf ("Client connected from %s:%d...\n", inet_ntoa (cliaddress.sin_addr),ntohs(cliaddress.sin_port));
 | 
			
		||||
        strcpy(buffer,"Welcome to myserver, Please enter your command:\n");
 | 
			
		||||
        send(new_socket, buffer, strlen(buffer),0);
 | 
			
		||||
     }
 | 
			
		||||
      char bufferString[BUF];
 | 
			
		||||
      int last = 0;
 | 
			
		||||
      int mode = 0;
 | 
			
		||||
      do {
 | 
			
		||||
         size = read (new_socket, buffer, BUF-1);
 | 
			
		||||
         if( size > 0)
 | 
			
		||||
         {
 | 
			
		||||
            buffer[size] = '\0';
 | 
			
		||||
            strcpy(bufferString, buffer);
 | 
			
		||||
            
 | 
			
		||||
            if (strncmp (bufferString, "send", 4)  == 0 || mode == 1){
 | 
			
		||||
               switch (last)
 | 
			
		||||
                  {
 | 
			
		||||
                  case 0:
 | 
			
		||||
                     last += 1;
 | 
			
		||||
                     mode = 1;
 | 
			
		||||
                     printf("\x1B[34m");
 | 
			
		||||
                     printf("->SEND:\x1B[33m %s\n", bufferString);
 | 
			
		||||
                     break;
 | 
			
		||||
                  case 1:
 | 
			
		||||
                     last += 1;
 | 
			
		||||
                     printf("\x1B[34m");
 | 
			
		||||
                     printf("->SEND->Sender wurde eingegeben:\x1B[33m %s\n", bufferString);
 | 
			
		||||
                     break;
 | 
			
		||||
                  case 2:
 | 
			
		||||
                     last += 1;
 | 
			
		||||
                     printf("\x1B[34m");
 | 
			
		||||
                     printf("->SEND->Empfänger wurde eingegeben:\x1B[33m %s\n", bufferString);
 | 
			
		||||
                     break;
 | 
			
		||||
                  case 3:
 | 
			
		||||
                     last += 1;
 | 
			
		||||
                     printf("\x1B[34m");
 | 
			
		||||
                     printf("->SEND->Betreff wurde eingegeben:\x1B[33m %s\n", bufferString);
 | 
			
		||||
                     break;
 | 
			
		||||
                  case 4:
 | 
			
		||||
                     last = 0;
 | 
			
		||||
                     mode = 0;
 | 
			
		||||
                     printf("\x1B[34m");
 | 
			
		||||
                     printf("->SEND->Nachricht wurde eingegeben:\x1B[33m %s\n", bufferString);
 | 
			
		||||
                     break;
 | 
			
		||||
                  }    
 | 
			
		||||
            }else if (strncmp (bufferString, "list", 4)  == 0 ){
 | 
			
		||||
               printf("LIST wurde endlich erkannt!\n");
 | 
			
		||||
            }else if (strncmp (bufferString, "read", 4)  == 0 ){
 | 
			
		||||
               printf("READ wurde endlich erkannt!\n");
 | 
			
		||||
            } else if (strncmp (bufferString, "del", 4)  == 0 ){
 | 
			
		||||
               printf("DEL wurde endlich erkannt!\n");
 | 
			
		||||
            }else {
 | 
			
		||||
               printf ("\x1B[33mBefehl wurde nicht erkannt: \x1B[31m%s\n", bufferString);
 | 
			
		||||
            }
 | 
			
		||||
            printf("\x1B[37m");
 | 
			
		||||
         }
 | 
			
		||||
         else if (size == 0)
 | 
			
		||||
         {
 | 
			
		||||
            printf("Client closed remote socket\n");
 | 
			
		||||
            break;
 | 
			
		||||
         }
 | 
			
		||||
         else
 | 
			
		||||
         {
 | 
			
		||||
            perror("recv error");
 | 
			
		||||
            return EXIT_FAILURE;
 | 
			
		||||
         }
 | 
			
		||||
      } while ( strncmp (buffer, "quit", 4)  != 0); 
 | 
			
		||||
     close (new_socket);
 | 
			
		||||
  }
 | 
			
		||||
  close (create_socket);
 | 
			
		||||
  return EXIT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user