Opération et maintenance
exploitation et maintenance Linux
Comment le socket Linux réalise-t-il le dialogue entre le serveur et le client ?
Comment le socket Linux réalise-t-il le dialogue entre le serveur et le client ?
1.服务器端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#define SERVPORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 5
int main()
{
struct sockaddr_in server_sockaddr,client_sockaddr;
int sin_size,recvbytes;
int sockfd,client_fd;
char buf[MAXDATASIZE];
/*创建socket*/
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket");
exit(1);
}
printf("socket success!,sockfd=%d\n",sockfd);
/*设置服务器sockaddr_in结构*/
server_sockaddr.sin_family=AF_INET;
server_sockaddr.sin_port=htons(SERVPORT);
server_sockaddr.sin_addr.s_addr=INADDR_ANY;
bzero(&(server_sockaddr.sin_zero),8);
/*绑定socket和端口*/
if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1){
perror("bind");
exit(1);
}
printf("bind success!\n");
/*监听客户端请求*/
if(listen(sockfd,BACKLOG)==-1){
perror("listen");
exit(1);
}
printf("listening....\n");
/*接受客户端请求*/
if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1){
perror("accept");
exit(1);
}
/*接收客户端信息*/
if((recvbytes=recv(client_fd,buf,MAXDATASIZE,0))==-1){
perror("recv");
exit(1);
}
printf("received a connection :%s\n",buf);
/*关闭socket*/
close(sockfd);
}
2.客户端
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 3333
#define MAXDATASIZE 100
main(int argc,char *argv[]){
int sockfd,sendbytes;
char buf[MAXDATASIZE];
struct hostent *host;
struct sockaddr_in serv_addr;
/*argc<2,表示没有输入主机名,主机句是IP地址形式,如“192.168.1.1”*/
if(argc < 2){
fprintf(stderr,"Please enter the server's hostname!\n");
exit(1);
}
/*获取主机名,地址解析函数*/
if((host=gethostbyname(argv[1]))==NULL){
perror("gethostbyname");
exit(1);
}
/*创建socket*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket");
exit(1);
}
/*设置serv_addr结构参数*/
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero),8);
/*向服务器请求连接,serv_addr是服务器端地址*/
if(connect(sockfd,(struct sockaddr *)&serv_addr,\
sizeof(struct sockaddr))==-1){
perror("connect");
exit(1);
}
/*发送消息给服务器,此时可以在服务器端看到"hello"字样*/
if((sendbytes=send(sockfd,"hello",5,0))==-1){
perror("send");
exit(1);
}
/*关闭连接*/
close(sockfd);
}
Étapes de compilation
#gcc server.c -o server #./server //此时服务器端在监听 #gcc client.c -o client #./client 172.31.100.236 //客户端向服务器端发送“hello",服务器端监听终止
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Outils d'IA chauds
Undress AI Tool
Images de déshabillage gratuites
Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes
AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.
Clothoff.io
Dissolvant de vêtements AI
Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !
Article chaud
Outils chauds
Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
Dreamweaver CS6
Outils de développement Web visuel
SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
Sujets chauds
1793
16
1736
56
1588
29
267
587
Application intégrée par Postman sur CentOS
May 19, 2025 pm 08:00 PM
L'intégration d'applications de facteur sur CentOS peut être réalisée grâce à une variété de méthodes. Voici les étapes et suggestions détaillées: Installez Postman en téléchargeant le package d'installation pour télécharger le package d'installation de la version Linux de Postman: Visitez le site officiel de Postman et sélectionnez la version adaptée à Linux à télécharger. Décompressez le package d'installation: Utilisez la commande suivante pour décompresser le package d'installation dans le répertoire spécifié, par exemple / opt: sudotar-xzfostman-linux-x64-xx.xx.xx.tar.gz-c / opt, veuillez noter que "Postman-Linux-x64-xx.xx.xx.tar.gz" est remplacé par le nom de fichier. Créer des symboles
Introduction détaillée à chaque répertoire de Linux et de chaque répertoire (réimprimé)
May 22, 2025 pm 07:54 PM
[DESCRIPTION DU RÉPERTOIRE COMMUN] DIRECTEUR / BIN STORES Fichiers exécutables (LS, CAT, MKDIR, etc.), et les commandes communes sont généralement là. / ETC stocke la gestion du système et les fichiers de configuration / Home Stores tous les fichiers utilisateur. Le répertoire racine du répertoire personnel de l'utilisateur est la base du répertoire domestique de l'utilisateur. Par exemple, le répertoire domestique de l'utilisateur d'utilisateur est / home / utilisateur. Vous pouvez utiliser ~ User pour représenter / USR pour stocker les applications système. Le répertoire plus important / USR / répertoire d'installation du logiciel d'administrateur système local local (installer les applications au niveau du système). Il s'agit du plus grand répertoire, et presque toutes les applications et fichiers à utiliser sont dans ce répertoire. / USR / X11R6 Répertoire pour stocker x fenêtre / usr / bin beaucoup
Où est l'interpréteur PyCharm?
May 23, 2025 pm 10:09 PM
La définition de l'emplacement de l'interprète dans PyCharm peut être réalisée via les étapes suivantes: 1. Ouvrez PyCharm, cliquez sur le menu "Fichier" et sélectionnez "Paramètres" ou "Préférences". 2. Recherchez et cliquez sur "Projet: [Nom de votre projet]" et sélectionnez "PythonInterpreter". 3. Cliquez sur "addterpreter", sélectionnez "SystemInterpreter", accédez au répertoire d'installation Python, sélectionnez le fichier exécutable Python, puis cliquez sur "OK". Lors de la configuration de l'interprète, vous devez prêter attention à l'exactitude du chemin, à la compatibilité des versions et à l'utilisation de l'environnement virtuel pour assurer le fonctionnement fluide du projet.
La différence entre la programmation en Java et d'autres langues Analyse des avantages des caractéristiques multiplateformes de Java
May 20, 2025 pm 08:21 PM
La principale différence entre Java et d'autres langages de programmation est sa caractéristique multiplateforme de "l'écriture à la fois, en cours d'exécution partout". 1. La syntaxe de Java est proche de C, mais il supprime les opérations de pointeur qui sont sujettes aux erreurs, ce qui le rend adapté aux grandes applications d'entreprise. 2. Comparé à Python, Java présente plus d'avantages dans les performances et le traitement des données à grande échelle. L'avantage multiplateforme de Java provient de la machine virtuelle Java (JVM), qui peut exécuter le même bytecode sur différentes plates-formes, simplifiant le développement et le déploiement, mais veillez à éviter d'utiliser des API spécifiques à la plate-forme pour maintenir la plateformité transversale.
Tutoriel d'installation de MySQL vous apprenez étape par étape les étapes détaillées pour l'installation et la configuration de MySQL étape par étape
May 23, 2025 am 06:09 AM
L'installation et la configuration de MySQL peuvent être terminées via les étapes suivantes: 1. Téléchargez le package d'installation adapté au système d'exploitation à partir du site officiel. 2. Exécutez l'installateur, sélectionnez l'option "Default Default" et définissez le mot de passe de l'utilisateur racine. 3. Après l'installation, configurez les variables d'environnement pour vous assurer que le répertoire bac de MySQL est dans le chemin du chemin. 4. Lors de la création d'un utilisateur, suivez le principe des autorisations minimales et définissez un mot de passe fort. 5. Ajustez les paramètres Innodb_Buffer_Pool_Size et Max_Connections lors de l'optimisation des performances. 6. Sauvegarder régulièrement la base de données et optimiser les instructions de requête pour améliorer les performances.
Expérience dans la participation aux activités d'échange de technologie hors ligne VSCODE
May 29, 2025 pm 10:00 PM
J'ai beaucoup d'expérience dans la participation aux activités d'échange de technologie hors ligne VSCODE, et mes principaux gains comprennent le partage du développement plug-in, des démonstrations pratiques et une communication avec d'autres développeurs. 1. Partage du développement plug-in: J'ai appris à utiliser l'API plug-in de VScode pour améliorer l'efficacité de développement, telles que la mise en forme automatique et les plug-ins d'analyse statique. 2. Démonstration pratique: j'ai appris à utiliser VScode pour le développement à distance et j'ai réalisé sa flexibilité et son évolutivité. 3. Communiquez avec les développeurs: j'ai obtenu des compétences pour optimiser la vitesse de démarrage VSCODE, telles que la réduction du nombre de plug-ins chargés au démarrage et la gestion de l'ordre de chargement du plug-in. En bref, cet événement m'a beaucoup profité et je recommande vivement ceux qui sont intéressés par VSCODE de participer.
Comment limiter les ressources des utilisateurs dans Linux? Comment configurer Ulimit?
May 29, 2025 pm 11:09 PM
Linux System restreint les ressources utilisateur via la commande UliMIT pour éviter une utilisation excessive des ressources. 1.Ulimit est une commande shell intégrée qui peut limiter le nombre de descripteurs de fichiers (-n), la taille de la mémoire (-v), le nombre de threads (-u), etc., qui sont divisés en limite douce (valeur effective actuelle) et limite dure (limite supérieure maximale). 2. Utilisez directement la commande ulimit pour une modification temporaire, telle que Ulimit-N2048, mais elle n'est valable que pour la session en cours. 3. Pour un effet permanent, vous devez modifier /etc/security/limits.conf et les fichiers de configuration PAM, et ajouter SessionRequiredPam_limits.so. 4. Le service SystemD doit définir Lim dans le fichier unitaire
Comparaison entre Informrix et MySQL sur Linux
May 29, 2025 pm 11:21 PM
Informrix et MySQL sont tous deux des systèmes de gestion de base de données relationnels populaires. Ils fonctionnent bien dans les environnements Linux et sont largement utilisés. Ce qui suit est une comparaison et une analyse des deux sur la plate-forme Linux: Installation et configurer Informrix: le déploiement d'informations sur Linux nécessite le téléchargement des fichiers d'installation correspondants, puis la réalisation du processus d'installation et de configuration en fonction de la documentation officielle. MySQL: Le processus d'installation de MySQL est relativement simple et peut être facilement installé via des outils de gestion des packages système (tels que APT ou YUM), et il existe un grand nombre de didacticiels et une prise en charge de la communauté sur le réseau pour référence. Performance Informrix: Informrix a d'excellentes performances et


