Erstellen einer Server-Mess-Anwendung mit C-Socket.
Klonen Sie das Projekt und die CD in das Hauptverzeichnis.
Öffnen Sie einen Terminal und richten Sie Ihren Server mit dem folgenden Befehl ein:
./server [port]Sie sollten ein solches Ergebnis erzielen:
Listening on 0.0.0.0:8080Danach eine Verbindung zum Server mit Ihrem Client mit diesem Befehl herstellen:
./client [IP] [port]Die Socket -Programmierung ist eine Möglichkeit, zwei Knoten in einem Netzwerk zu verbinden, um miteinander zu kommunizieren. Ein Socket (Knoten) hört auf einem bestimmten Port an einer IP zu, während ein anderer Socket nach dem anderen sendet, um eine Verbindung herzustellen. Server bildet den Listener -Socket, während der Client den Server erreicht.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Nach der Erstellung der Socket bindet die Bindfunktion die Socket an die in ADDR angegebene Adresse und Portnummer (benutzerdefinierte Datenstruktur). Im Beispielcode binden wir den Server an den Localhost, daher verwenden wir INADDR_ANY, um die IP -Adresse anzugeben.
int listen ( int sockfd , int backlog );Es wird die Server -Socket in einen passiven Modus versetzt, in dem er darauf wartet, dass sich der Client dem Server nähert, um eine Verbindung herzustellen. Der Rückstand definiert die maximale Länge, auf die die Warteschlange ausstehender Verbindungen für Sockfd wachsen kann. Wenn eine Verbindungsanforderung eintrifft, wenn die Warteschlange voll ist, erhält der Client möglicherweise einen Fehler mit einem Hinweis auf Econnrefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );Es extrahiert die erste Verbindungsanforderung in der Warteschlange ausstehender Verbindungen für den Hörbuchse Sockfd, erstellt einen neuen verbundenen Socket und gibt einen neuen Dateideskriptor zurück, der sich auf diesen Socket bezieht. Zu diesem Zeitpunkt wird die Verbindung zwischen Client und Server hergestellt und sie sind bereit, Daten zu übertragen.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Der CONNECT () -Systemanruf verbindet den von der Dateideskriptor -Sockfd genannten Socket mit der von AddR angegebenen Adresse. Die Adresse und der Port des Servers sind in adDR angegeben.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );Verwenden Sie PThread, um einen Thread für jeden unserer Clients zu erstellen und diese mit einer bestimmten Methode zu behandeln.