Schritte zum Erstellen von TCP in LinuxFür die TCP-Programmierung sind zwei Codesätze für Client und Server erforderlich, und der Prozess der TCP-Erstellung ist nicht vollständig konsistent. ServerErstellen eines Sockets mit der Socket-Funktion Verwenden Sie die Funktion setsockopt, um die Socket-Eigenschaften festzulegen Verwenden Sie die Bindefunktion, um die IP-Adresse und die Portinformationen an den Socket zu binden, und verwenden Sie die Listenfunktion, um den angegebenen Port abzuhören Verwenden Sie die Akzeptieren-Funktion, um die Verbindungsanfrage des Clients zu empfangen Verwenden Sie die Sende-/Empfangs- und Lese-/Schreibfunktionen zum Senden und Empfangen von Daten Mit der Funktion „Schließen“ schließen Sie die Netzwerkverbindung und überwachen KundeVerwenden Sie die Socket-Funktion, um einen Socket zu erstellen, und verwenden Sie die Funktion setsockopt, um Socket-Eigenschaften festzulegen Verwenden Sie die Bind-Funktion, um die IP-Adresse und die Portinformationen zu binden Legen Sie die IP-Adresse und den Port für die Verbindung fest und fordern Sie mithilfe der Verbindungsfunktion eine Verbindung an. Verwenden Sie die Sende-/Empfangs- und Lese-/Schreibfunktionen zum Senden und Empfangen von Daten Mit der Schließen-Funktion schließen Sie die Netzwerkverbindung TCP-EinrichtungsprozessBeispielcodeServer #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <pthread.h> #include <zeit.h> #maximaleGröße 128 definieren char news[MAXSIZE]; int res; //Wird verwendet, um den Rückgabewert der Funktion zu empfangen void* pthread_chat(void * arg) //Erstelle einen Thread zum Empfangen von Daten { Geben Sie den confd-Wert in das Feld ein, das Sie im Kontextmenü des Arguments angeben. während(1) { res = recv(confd, Nachrichten, Größe von(Nachrichten), 0); wenn(res <= 0) { perror("empfangen"); brechen; } printf("Die Neuigkeit ist: %s\n",news); memset(Neuigkeiten,0,MAXIMALE GRÖSSE); sende(confd,"OK",2,0); } printf("Ein Kunde vorbei\n"); schließen(confd); } char *Time() // Aktuelle Uhrzeit abrufen { time_t-Zeitgeber; Struktur tm *tblock; Timer = Zeit(NULL); tblock = Ortszeit(&Timer); gibt asctime(tblock) zurück; } void save(char *s) //Logdatei speichern { int fd; fd = öffnen("Journal",O_RDWR|O_APPEND|O_CREAT); wenn(fd < 0) perror("öffnen"); anders { char *buf = Zeit(); strcat(buf,s); schreiben(fd,buf,MAXSIZE); lseek(fd,0,SUCHE_ENDE); wenn(res < 0) perror("schreiben"); } } int main() { int sockfd = socket(AF_INET, SOCK_STREAM, 0); Struktur sockaddr_in saddr, caddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(6666); saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); res = binden(sockfd,(Struktur sockaddr*)&saddr,Größevon(saddr)); wenn(res < 0) perror("binden"); listen(sockfd, 5); //Port abhören, während(1) { int len = sizeof(caddr); int confd = akzeptieren(sockfd,(Struktur sockaddr*)&caddr, &Länge); wenn(confd < 0) { perror("akzeptieren"); weitermachen; }anders { speichern(inet_ntoa(caddr.sin_addr)); } printf("Akzeptiere confdis:%d, ip=%s\n",confd,inet_ntoa(caddr.sin_addr)); pthread_t-Tid; pthread_create(&tid, NULL, pthread_chat, &confd); } } Kunde #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #maximaleGröße 128 definieren char news[MAXSIZE]; int res; //Wird verwendet, um den Rückgabewert der Funktion zu erhalten int main() { printf("------Willkommen im Chatroom-----\n"); printf("Wenn Sie beenden möchten, geben Sie bitte --bye--\n ein"); int sockfd = socket(AF_INET, SOCK_STREAM, 0); Struktur sockaddr_in saddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(6666); saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); int confd = verbinden(sockfd,(Struktur sockaddr*)&saddr,sizeof(saddr)); wenn(confd < 0) perror("verbinden"); während(1) { printf("Bitte geben Sie die Neuigkeiten ein\n"); fgets(Nachrichten,MAXSIZE,stdin); wenn(strncmp(Neuigkeiten,"Tschüss",3) == 0) { brechen; } sende(sockfd, news, strlen(news), 0); memset(Neuigkeiten,0,MAXIMALE GRÖSSE); recv(sockfd, Nachrichten, Größe von(Nachrichten), 0); printf("Die Neuigkeit des Servers ist: %s\n",news); } schließen(sockfd); Ausfahrt (0); } Bitte beachten Sie, dass Sie beim Kompilieren die Option -lpthread hinzufügen müssen, da der Server eine Multithread-Entwicklung verwendet. Der Programmablauf hat folgende Auswirkungen: Dies ist das Ende dieses Artikels über den Prozess der Erstellung einer TCP-Verbindung im Linux-System. Weitere relevante Inhalte zur Erstellung einer TCP-Verbindung in Linux finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: HTML-Grammatik-Enzyklopädie_HTML-Sprachgrammatik-Enzyklopädie (unbedingt lesen)
Heute habe ich in diesem Artikel 30 hervorragende ...
Inhaltsverzeichnis Vorwort XA-Protokoll So implem...
MySQL x64 stellt kein Installationsprogramm berei...
SQL-Anweisungen (Structured Query Language), also...
Beim Bereitstellen des Projekts auf Centos ist mi...
Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...
Ab MySQL 5.7 wurden viele Sicherheitsupdates hinz...
Über let, um Probleme durch Schließung zu vermeid...
Hier finden Sie eine Einführung zum Ändern des Pa...
Kürzlich hat Microsoft Windows Server 2016 veröff...
Bei Ubuntu 20.04 ist die Root-Anmeldung standardm...
Das Konzept des Schlosses ①. Im wirklichen Leben ...
Frage Frage 1: Wie kann der Leistungsverlust beho...
Anwendungsschachtelung ungeordneter Listen Code ko...
MySQL 8.0.19 unterstützt die Sperrung des Kontos ...