


So implementieren Sie ausgewählte asynchrone Kommunikation unter Linux
1. Serverseite
/*select_server.c 2011.9.2 by yyg*/ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys> #include <netinet> #include <sys> #include <sys> #include <pthread.h> #include <sys> #include <sys> #include <arpa> #include <unistd.h> #define MAXBUF 1024 int main(int argc,char **argv){ int sockfd,new_fd; socklen_t len; struct sockaddr_in my_addr,their_addr; unsigned int myport,lisnum; char buf[MAXBUF+1]; fd_set rfds; struct timeval(argv[1]){ myport = atoi(argv[1]); } else myport = 7838; if(argv[2]){ lisnum = atoi(argv[2]); } else lisnum =2; if((sockfd = socket(PF_INET,SOCK_STREAM,0))== -1){ perror("socket"); exit(1); } bzero(&my_addr,sizeof(my_addr)); my_addr.sin_family = PF_INET; my_addr.sin_port = htons(myport); if(argv[3]) my_addr.sin_addr.s_addr = INADDR_ANY; if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1){ perror("bind"); exit(1); } if(listen(sockfd, lisnum) == -1){ perror("listen"); exit(1); } while(1){ printf("\n----waiting for new connecting to start new char----\n"); len = sizeof(struct sockaddr); if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&len)) == -1){ perror("accept"); exit(errno); } else printf("server:got connection from %s,port %d,socked %d\n",\ inet_ntoa(their_addr.sin_addr),\ ntohs(their_addr.sin_port),new_fd); /*开始处理每个新连接上的数据收发*/ //printf("\n---ready to go.now you can chatting...input enter,then you can chat---\n"); while(1){ /*把集合清空*/ FD_ZERO(&rfds); /*把标准输入句柄0加入到集合中*/ FD_SET(0,&rfds); maxfd = 0; /*把当前连接句柄new_fd加入到集合中*/ FD_SET(new_fd,&rfds); if(new_fd > maxfd) maxfd = new_fd; /*设置最大等待时间*/ tv.tv_sec = 1; tv.tv_usec = 0; retval = select(maxfd+1,&rfds,NULL,NULL,&tv); if(retval == -1){ printf("select error!%s\n",strerror(errno)); break; } else if(retval == 0){ //printf("no message come,user no press the button,please wait...\n"); continue; } else{ if(FD_ISSET(new_fd,&rfds)){ /*连接的socket 上有消息则接收并显示*/ bzero(buf,MAXBUF+1); /*接收对方发过来的消息,最多MAXBUF字节*/ len = recv(new_fd, buf, MAXBUF, 0); if(len > 0) printf("recv msg success:%s! %d bytes rcv.\n ",buf,len); else{ if(len quit)"); fflush(stdout); bzero(buf,MAXBUF+1); fgets(buf,MAXBUF,stdin); if(!strncasecmp(buf,"no",2)){ printf("quit the chatting!\n"); break; } }/*外while*/ close(sockfd); return 0; }</unistd.h></arpa></sys></sys></pthread.h></sys></sys></netinet></sys></string.h></errno.h></stdlib.h></stdio.h>
2. Client-Seite
/*select_client.c 2011.9.2 by yyg*/ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys> #include <netinet> #include <sys> #include <sys> #include <pthread.h> #include <sys> #include <arpa> #include <unistd.h> #include <resolv.h> #define MAXBUF 1024 int main(int argc,char **argv){ int sockfd,len; struct sockaddr_in dest; char buffer[MAXBUF+1]; fd_set rfds; struct timeval(argc != 3){ printf("the param style wrong!\n"); exit(0); } /*创建一个socket用于tcp通信*/ if((sockfd = socket(AF_INET,SOCK_STREAM,0)) maxfd) maxfd = sockfd; /*设置最大等待时间*/ tv.tv_sec = 1; tv.tv_usec = 0; /*开始等待*/ retval = select(maxfd+1,&rfds,NULL,NULL,&tv); if(retval == -1){ printf("select error,quit!\n"); break; }else if(retval == 0){ continue; }else{ if(FD_ISSET(sockfd,&rfds)){ /*连接的socket 上有消息则接收并显示*/ bzero(buffer,MAXBUF+1); /*接收对方发过来的消息,最多MAXBUF字节*/ len = recv(sockfd, buffer, MAXBUF, 0); if(len > 0) printf("recv msg success:%s! %d bytes rcv.\n ",buffer,len); else{ if(len <p data-id="p838747a-WLkK4c6P">Laufende Ergebnisse:<br></p> <p data-id="p838747a-d7ZNiL25">Terminal 1: Serverseite</p> <pre class="brush:php;toolbar:false">[root@localhost net]# ./select_server 7838 ----waiting for new connecting to start new char---- server:got connection from 172.31.100.236,port 59462,socked 4 recv msg success:kfldsjfk! 8 bytes rcv. 456354 msg: 456354 send success, send 6 bytes! recv msg success:453455! 6 bytes rcv.
Terminal 2: Client
[root@localhost net]# ./select_client 172.31.100.236 7838 ---ready to chatting...--- kfldsjfk msg: kfldsjfk send success, send 8 bytes! recv msg success:456354! 6 bytes rcv. 453455 msg: 453455 send success, send 6 bytes!
Das obige ist der detaillierte Inhalt vonSo implementieren Sie ausgewählte asynchrone Kommunikation unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Der Linux -Wartungsmodus kann über das Grub -Menü eingegeben werden. Die spezifischen Schritte sind: 1) Wählen Sie den Kernel im GRUB -Menü aus und drücken Sie 'e', um zu bearbeiten, 2) hinzu 'Single' oder '1' am Ende der "Linux" -Zeile 3) Drücken Sie Strg X, um zu starten. Der Wartungsmodus bietet eine sichere Umgebung für Aufgaben wie Systemreparaturen, Kennwortreset und System -Upgrade.

Die Schritte zur Eingabe des Linux -Wiederherstellungsmodus sind: 1. Starten Sie das System neu und drücken Sie die spezifische Taste, um das Grub -Menü einzugeben. 2. Wählen Sie die Option mit (RecoveryMode) aus; 3. Wählen Sie den Vorgang im Menü Wiederherstellungsmodus wie FSCK oder Root aus. Mit dem Wiederherstellungsmodus können Sie das System im Einzelbenutzermodus starten, Dateisystemprüfungen und -reparaturen durchführen, Konfigurationsdateien bearbeiten und andere Vorgänge zur Lösung von Systemproblemen unterstützen.

Zu den Kernkomponenten von Linux gehören Kernel, Dateisystem, Shell und gemeinsame Werkzeuge. 1. Der Kernel verwaltet Hardware -Ressourcen und bietet grundlegende Dienste an. 2. Das Dateisystem organisiert und speichert Daten. 3. Shell ist die Schnittstelle, in der Benutzer mit dem System interagieren können. 4. Common Tools helfen dabei, tägliche Aufgaben zu erledigen.

Die Grundstruktur von Linux umfasst Kernel, Dateisystem und Shell. 1) Kernel-Management-Hardware-Ressourcen und verwenden Sie UNAME-R, um die Version anzuzeigen. 2) Das Ext4 -Dateisystem unterstützt große Dateien und Protokolle und wird mit mkfs.ext4 erstellt. 3) Shell bietet die Befehlszeileninteraktion wie Bash und listet Dateien mithilfe von LS-L auf.

Zu den wichtigsten Schritten der Linux -Systemverwaltung und -wartung gehören: 1) das Grundkenntnis, z. B. die Dateisystemstruktur und die Benutzerverwaltung; 2) Systemüberwachung und Ressourcenverwaltung durchführen, Top-, HTOP- und andere Tools verwenden. 3) Verwenden Sie Systemprotokolle zur Behebung, verwenden Sie JournalCtl und andere Tools. 4) Automatisierte Skripte und Aufgabenplanung schreiben, Cron -Tools verwenden. 5) Sicherheitsmanagement und Schutz implementieren, Firewalls durch Iptables konfigurieren. 6) Führen Sie Leistungsoptimierung und Best Practices durch, passen Sie die Kernelparameter an und entwickeln Sie gute Gewohnheiten.

Der Linux -Wartungsmodus wird eingegeben, indem init =/bin/bash oder einzelne Parameter beim Start hinzugefügt werden. 1. Geben Sie den Wartungsmodus ein: Bearbeiten Sie das Grub -Menü und fügen Sie Startparameter hinzu. 2. REMOUNG DAS FILE-SYSTEM zum Lesen und Schreibmodus: Mount-Oremount, RW/. 3. Reparieren Sie das Dateisystem: Verwenden Sie den Befehl FSCK, z. B. FSCK/Dev/SDA1. 4. Sichern Sie die Daten und arbeiten Sie mit Vorsicht, um den Datenverlust zu vermeiden.

In diesem Artikel wird erläutert, wie die Effizienz der Hadoop -Datenverarbeitung auf Debian -Systemen verbessert werden kann. Optimierungsstrategien decken Hardware -Upgrades, Parameteranpassungen des Betriebssystems, Änderungen der Hadoop -Konfiguration und die Verwendung effizienter Algorithmen und Tools ab. 1. Hardware -Ressourcenverstärkung stellt sicher, dass alle Knoten konsistente Hardwarekonfigurationen aufweisen, insbesondere die Aufmerksamkeit auf die Leistung von CPU-, Speicher- und Netzwerkgeräten. Die Auswahl von Hochleistungs-Hardwarekomponenten ist wichtig, um die Gesamtverarbeitungsgeschwindigkeit zu verbessern. 2. Betriebssystem -Tunes -Dateideskriptoren und Netzwerkverbindungen: Ändern Sie die Datei /etc/security/limits.conf, um die Obergrenze der Dateideskriptoren und Netzwerkverbindungen zu erhöhen, die gleichzeitig vom System geöffnet werden dürfen. JVM-Parameteranpassung: Einstellen in der Hadoop-env.sh-Datei einstellen

In diesem Leitfaden werden Sie erfahren, wie Sie Syslog in Debian -Systemen verwenden. Syslog ist ein Schlüsseldienst in Linux -Systemen für Protokollierungssysteme und Anwendungsprotokollnachrichten. Es hilft den Administratoren, die Systemaktivitäten zu überwachen und zu analysieren, um Probleme schnell zu identifizieren und zu lösen. 1. Grundkenntnisse über syslog Die Kernfunktionen von Syslog umfassen: zentrales Sammeln und Verwalten von Protokollnachrichten; Unterstützung mehrerer Protokoll -Ausgabesformate und Zielorte (z. B. Dateien oder Netzwerke); Bereitstellung von Echtzeit-Protokoll- und Filterfunktionen. 2. Installieren und Konfigurieren von Syslog (mit Rsyslog) Das Debian -System verwendet standardmäßig Rsyslog. Sie können es mit dem folgenden Befehl installieren: sudoaptupdatesud


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung