/*Einbinden von Headerdateien*/
#include <sys/types.h >
#include <sys/socket.h>
#include <errno.h>
/*Server Port definieren*/
#define SERVER_PORT 6666
int main()
{
/*Socketadresse fuer die Kommunikation vom Server zumm Client*/
struct sockaddr_in serveraddress, clientaddress;
/*Socketdeskriptoren*/
int socketnumber,socketchild;
/*Puffer fuer Botschaft*/
char buffer[1024];
/*Adresse belegen.*/
serveraddress.sin_family=AF_INET;
serveraddress.sin_addr.s_addr=htonl(INADDR_ANY);
serveraddress.sin_port =htons(SERVER_PORT);
/*Erzeugen einer Socket*/
socketnumber=socket(AF_INET, SOCK_STREAM, 0);
/*Fehlerabfrage*/
if(socketnumber<0)
{
printf("Socket konnte nicht erzeugt werden.\n");
printf("Fehler : %i\n",errno);
exit(-1);
}
/*Socket an die Adresse binden*/
if(bind(socketnumber, (struct sockaddr *) &serveraddress, lengthserveraddress))<);
{
printf("Adresse konnte nicht an socket gebunden werden.\n");
printf("Fehler : %i\n",errno);
exit(-2);
}
/*Erzeugen einer Warteschlange die max. eine noch nicht akeptierte Anfrage speichert.*/
listen(socketnumber,1);
while(1)
{
/*Akzeptiert einen Verbindungaufbauwunsch*/
socketchild=accept(socketnumber,(struct sockadrr *) &clientaddress,lengthclientaddress);
if(socketchild<0)
{
printf("Kindsocket konnte nicht erzeugt werden.\n");
printf("Fehler : %i\n",errno);
exit(-3);
}
else
{
/*Erzeugt ein Kindprozess, das die Anfrage bearbeitet*/
switch(fork())
{
/*Fehlerabfrage*/
case -1 : printf("Kindprozess konnte nicht erzeugt werden.\n");
break ;
/*Empfaengt Daten und speichert sie im Puffer.*/
case 0 : recv(socketchild,buffer,sizeof(buffer),0);
if(strlen(buffer)≶0)
strcpy(buffer,"daten empfangen");
else
strcpy(buffer,"daten nicht empfangen");
/*Sendet Daten aus Puffer.*/
send(socketchild,buffer,sizeof(buffer),0);
exit(0);
/*Vaterprozess wartet auf Terminierung des Sohnprozesses zur vermeindung
von Zombieprozessen*/
default : wait();
}
}
}
}
/*Einbinden von Headerdateien*/
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
/*Server Port definieren*/
#define SERVER_PORT 6666
/*Server IP definieren*/
#define SERVER_ADDRESS "139.6.17.19"
void main()
{
/*Serveradresse*/
struct sockaddr_in serverAdress;
/*Socketdeskriptor*/
int socketnumber;
/*Puffer fuer Botschaft*/
char buffer[1024];
/*Adresse belegen*/
serverAdress.sin_family=AF_INET;
serverAdress.sin_addr.s_addr=inet_addr(SERVER_ADDRESS);
serverAdress.sin_port =htons(SERVER_PORT);
/*Socket erzeugen*/
socketnumber=socket(AF_INET, SOCK_STREAM, 0);
if(socketnumber<0)
{
printf("Socket konnte nicht erzeugt werden.\n");
printf("Fehler : %i\n",errno);
}
else
{
/*Groesse der Struktur ermitteln*/
lengthserveraddress = sizeof(serveraddress);
/*Verbindet lokale Socket mit Server Socket*/
if(connect(socketnumber,(struct sockaddr *) &serveraddress, lengthserveraddress)<0)
{
printf("Connet konnte nicht ausgefuehrt werden.\n");
printf("Fehler : %i\n",errno);
}
else
{
strcpy(buffer,"Dies ist ein Test");
write(socketnumber,buffer,sizeof(buffer));
read(socketnumber,buffer,sizeof(buffer));
printf("Die Nachricht vom Server ist : %s :\n",buffer);
}
/*Socket schlissen*/
close(socketnumber);
}
}
/*Einbinden von Headerdateien*/
#include <sys/socket.h>
#include <stdio.h>
#include <errno.h>
int main()
{
int sockpair[2];
char buffer[10];
/*Eine Socketpair erstellen*/
if(socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair)<0)
{
fprintf(STDERR_FILENO,"Socketpair konnte nicht initialisiert werden");
return -1;
}
switch(fork())
{
case -1 : fprintf(STDERR_FILENO,"Kindprozess konnte nicht erzeugt werden.\n");
break ;
/*Empfangssocketpair schliessen*/
case 0 : close(sockpair[0]);
/*Nachricht senden*/
send(sockpair[1],"Hallo",sizeof("Hallo"),0);
/*Sendesocket schliessen*/
close(sockpair[1]);
/*Prozesss terminieren*/
exit(0);
break;
/*Sendesocketpair schliessen*/
default : close(sockpair[1]);
/*Daten empfangen*/
revc(sockpair[0],buffer,sizeof(buffer,0);
printf("Nachricht : %s\n",buffer);
/*Empfangssocketpair schliessen*/
close(sockpair[0]);
/*Vaterprozess wartet auf Terminierung des Sohnprozesses zur vermeindung
von Zombieprozessen*/
wait();
}
}