suchen
HeimBetrieb und InstandhaltungBetrieb und Wartung von LinuxSo 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!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Linux -Operationen: Verwendung des WartungsmodusLinux -Operationen: Verwendung des WartungsmodusApr 19, 2025 am 12:08 AM

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.

Linux: Eingeben Sie den Wiederherstellungsmodus (und die Wartung)Linux: Eingeben Sie den Wiederherstellungsmodus (und die Wartung)Apr 18, 2025 am 12:05 AM

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.

Die wesentlichen Komponenten von Linux: Für Anfänger erklärtDie wesentlichen Komponenten von Linux: Für Anfänger erklärtApr 17, 2025 am 12:08 AM

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.

Linux: Ein Blick auf seine grundlegende StrukturLinux: Ein Blick auf seine grundlegende StrukturApr 16, 2025 am 12:01 AM

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.

Linux -Operationen: Systemverwaltung und WartungLinux -Operationen: Systemverwaltung und WartungApr 15, 2025 am 12:10 AM

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.

Verständnis des Linux -Wartungsmodus: Das EssentialsVerständnis des Linux -Wartungsmodus: Das EssentialsApr 14, 2025 am 12:04 AM

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.

Wie Debian die Hadoop -Datenverarbeitungsgeschwindigkeit verbessertWie Debian die Hadoop -Datenverarbeitungsgeschwindigkeit verbessertApr 13, 2025 am 11:54 AM

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

Wie man Debian Syslog lerntWie man Debian Syslog lerntApr 13, 2025 am 11:51 AM

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

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SecLists

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

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung