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