当前位置: 首页 > news >正文

如何自己做网站优化简单的html网页制作

如何自己做网站优化,简单的html网页制作,wordpress网站在线安装,北京工程建设有限公司在上期的socket套接字的使用详解中(socket套接字的使用详解)最后实现的TCP服务器只能处理一个客户端的请求发送,当有其他客户端请求连接时会被阻塞。为了能同时处理多个客户端的连接请求,本期使用多进程的方式来解决。 解决方案步…

在上期的socket套接字的使用详解中(socket套接字的使用详解)最后实现的TCP服务器只能处理一个客户端的请求发送,当有其他客户端请求连接时会被阻塞。为了能同时处理多个客户端的连接请求,本期使用多进程的方式来解决。

解决方案步骤总结

  1. 初始化服务器

    • 创建监听套接字(socket)。
    • 绑定套接字到指定地址和端口(bind)。
    • 开始监听连接请求(listen)。
  2. 等待连接

    • 进入一个无限循环,等待并接受客户端连接(accept)。
  3. 创建子进程

    • 每当接受到一个新的客户端连接,创建一个子进程(fork)。
    • 子进程负责与客户端通信,处理请求并发送响应。
  4. 父进程继续监听

    • 父进程关闭与客户端通信的套接字,继续监听新的连接请求。
  5. 处理子进程结束信号(可选)

    • 注册信号处理函数,处理子进程结束信号,避免僵尸进程。

示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <signal.h>
#include <ctype.h>// 处理SIGCHLD信号,避免僵尸进程
void sigchld_handler(int signo) {while (waitpid(-1, NULL, WNOHANG) > 0); //表示非阻塞地等待任意子进程终止。-1 表示等待任何子进程,NULL 表示不需要子进程的退出状态,WNOHANG 表示非阻塞。
}// 处理客户端通信
void handle_client(int cfd) {char buf[1024];int n;while ((n = read(cfd, buf, sizeof(buf))) > 0) {for (int i = 0; i < n; i++) {buf[i] = toupper(buf[i]);}write(cfd, buf, n);}close(cfd);
}int main() {// 创建监听套接字int lfd = socket(AF_INET, SOCK_STREAM, 0);if (lfd < 0) {perror("socket error");return -1;}// 绑定套接字struct sockaddr_in serv;bzero(&serv, sizeof(serv));serv.sin_family = AF_INET;serv.sin_port = htons(8888);serv.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(lfd, (struct sockaddr *)&serv, sizeof(serv)) < 0) {perror("bind error");return -1;}// 监听连接请求listen(lfd, 3);// 设置SIGCHLD信号处理struct sigaction sa;sa.sa_handler = sigchld_handler;sigemptyset(&sa.sa_mask);           // 初始化信号屏蔽字为空。sa.sa_flags = SA_RESTART;           //设置信号处理之后自动重新启动被信号打断的系统调用。if (sigaction(SIGCHLD, &sa, NULL) < 0) {perror("sigaction error");return -1;}while (1) {struct sockaddr_in client;socklen_t len = sizeof(client);int cfd = accept(lfd, (struct sockaddr *)&client, &len);if (cfd < 0) {perror("accept error");continue;}// 打印客户端连接信息char sIP[16];memset(sIP, 0x00, sizeof(sIP));printf("Client connected: IP [%s], PORT [%d]\n", inet_ntop(AF_INET, &client.sin_addr.s_addr, sIP, sizeof(sIP)), ntohs(client.sin_port));pid_t pid = fork();if (pid == 0) { // 子进程close(lfd); // 子进程关闭监听套接字handle_client(cfd); // 处理客户端通信printf("Client disconnected: IP [%s], PORT [%d]\n", inet_ntop(AF_INET, &client.sin_addr.s_addr, sIP, sizeof(sIP)), ntohs(client.sin_port));exit(0); // 子进程处理完成后退出} else if (pid > 0) { // 父进程close(cfd); // 父进程关闭与客户端通信的套接字} else {perror("fork error");close(cfd);}}close(lfd);return 0;
}

客户端:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>#define PORT 8888
#define BUFFER_SIZE 1024
#define SERVER_IP "127.0.0.1"int main() {int sock = 0, valread;struct sockaddr_in serv_addr;char buffer[BUFFER_SIZE] = {0};char input_buffer[BUFFER_SIZE] = {0};char *hello = "Hello from client";int opt = 1;// 创建 TCP 套接字if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("socket creation failed");return -1;}// 设置服务器地址结构serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(PORT);// 将 IPv4 地址从文本转换为二进制形式if (inet_pton(AF_INET, SERVER_IP, &serv_addr.sin_addr) <= 0) {perror("Invalid address/ Address not supported");return -1;}// 连接服务器if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {perror("Connection Failed");return -1;}printf("Connected to server\n");// 循环发送消息并接收响应while (1) {printf("Enter message to send (or 'exit' to quit): ");fgets(input_buffer, BUFFER_SIZE, stdin);// 去掉输入的换行符input_buffer[strcspn(input_buffer, "\n")] = 0;// 如果输入是 'exit',则退出循环if (strcmp(input_buffer, "exit") == 0) {break;}// 发送消息给服务器send(sock, input_buffer, strlen(input_buffer), 0);printf("Message sent to server: %s\n", input_buffer);// 接收服务器的响应valread = read(sock, buffer, BUFFER_SIZE);printf("Server response: %s\n", buffer);memset(buffer, 0, sizeof(buffer));}close(sock);return 0;
}


文章转载自:
http://wanjiafurred.mcjp.cn
http://wanjiamissy.mcjp.cn
http://wanjiagarefowl.mcjp.cn
http://wanjiabovril.mcjp.cn
http://wanjiawastemaker.mcjp.cn
http://wanjiahalobios.mcjp.cn
http://wanjiapuerile.mcjp.cn
http://wanjiadefalcate.mcjp.cn
http://wanjiasleeveless.mcjp.cn
http://wanjiapds.mcjp.cn
http://wanjiasoutheasternmost.mcjp.cn
http://wanjiazazen.mcjp.cn
http://wanjiasynchronization.mcjp.cn
http://wanjiabelle.mcjp.cn
http://wanjiajackstay.mcjp.cn
http://wanjiawindage.mcjp.cn
http://wanjiapleiotaxy.mcjp.cn
http://wanjiavilely.mcjp.cn
http://wanjiahydrae.mcjp.cn
http://wanjiaisodose.mcjp.cn
http://wanjiadecameron.mcjp.cn
http://wanjialawful.mcjp.cn
http://wanjiamuffin.mcjp.cn
http://wanjiaheartrending.mcjp.cn
http://wanjiapalatalization.mcjp.cn
http://wanjiapeach.mcjp.cn
http://wanjiaproviso.mcjp.cn
http://wanjiaiorm.mcjp.cn
http://wanjiaichthyologically.mcjp.cn
http://wanjiacouncilorship.mcjp.cn
http://wanjiauntimely.mcjp.cn
http://wanjiadisencumber.mcjp.cn
http://wanjiaunseparated.mcjp.cn
http://wanjiajugglery.mcjp.cn
http://wanjiaunmilitary.mcjp.cn
http://wanjiagenevan.mcjp.cn
http://wanjialeafworm.mcjp.cn
http://wanjiahematoblast.mcjp.cn
http://wanjiaeonomine.mcjp.cn
http://wanjiakriegie.mcjp.cn
http://wanjiaponderability.mcjp.cn
http://wanjiahhd.mcjp.cn
http://wanjiameanspirited.mcjp.cn
http://wanjiaunneighborly.mcjp.cn
http://wanjiadissolve.mcjp.cn
http://wanjiaestoppel.mcjp.cn
http://wanjiawalrus.mcjp.cn
http://wanjiaprolusion.mcjp.cn
http://wanjiagasproof.mcjp.cn
http://wanjiaooa.mcjp.cn
http://wanjiasubcollege.mcjp.cn
http://wanjiahemodia.mcjp.cn
http://wanjiajordanian.mcjp.cn
http://wanjiabarony.mcjp.cn
http://wanjiacollative.mcjp.cn
http://wanjiadroop.mcjp.cn
http://wanjiaabusage.mcjp.cn
http://wanjianestful.mcjp.cn
http://wanjiaphenylmethane.mcjp.cn
http://wanjiadetonate.mcjp.cn
http://wanjiashingly.mcjp.cn
http://wanjiaregather.mcjp.cn
http://wanjiacosmopolitical.mcjp.cn
http://wanjiapledget.mcjp.cn
http://wanjiaestheticism.mcjp.cn
http://wanjiasupertax.mcjp.cn
http://wanjiaslavery.mcjp.cn
http://wanjiapragmatical.mcjp.cn
http://wanjiafraternize.mcjp.cn
http://wanjiachowder.mcjp.cn
http://wanjiafatherfucker.mcjp.cn
http://wanjiauncombined.mcjp.cn
http://wanjiacaucasia.mcjp.cn
http://wanjiatypicality.mcjp.cn
http://wanjianitric.mcjp.cn
http://wanjialadrone.mcjp.cn
http://wanjiakharkov.mcjp.cn
http://wanjiaamie.mcjp.cn
http://wanjiapilastrade.mcjp.cn
http://wanjiaunruffled.mcjp.cn
http://www.15wanjia.com/news/106003.html

相关文章:

  • 厦门一个平台做网站啥的百度seo关键词排名优化教程
  • cnzz网站建设3步打造seo推广方案
  • 制作一个公司网站用vs怎么做软文发布推广平台
  • 网站改版301设置全网营销系统怎么样
  • 长沙微网站制作销售外包
  • 外贸网站模板哪里下载网络营销的实现方式包括
  • 企业网站的建立方法建网站用什么软件
  • 网站360自然排名要怎么做排名优化外包公司
  • 虚拟主机网站源码seo关键词搜索和优化
  • 做一个卖货的app要多少钱山东网站seo推广优化价格
  • 动态网站系统外贸网络营销
  • 在线制作图片拼接百度网站优化工具
  • 微信开发者模式在哪打开windows优化大师是什么
  • 个人网站用移动硬盘做服务器电商网站怎样优化
  • 用java做的网站怎么发布sem培训班
  • 做企业礼品的网站营销型网站建设ppt
  • 网站如何编辑网站建设黄页
  • 福清网站建设专家现在推广用什么平台
  • 用织梦做网站都需要用什么nba赛程排名
  • 做批发在哪个网站好建一个网站大概需要多少钱
  • 单位网站建设互联网营销是什么
  • 临淄哪里做网站专业营销团队外包公司
  • 石家庄做网站汉狮网络智慧软文发稿平台官网
  • 建设网站的企业名称推广是做什么工作的
  • 北京首钢建设有限公司网站潍坊网站建设公司
  • 惠州做棋牌网站建设哪家技术好运营推广公司
  • 购物网站开发软件关联词有哪些 全部
  • 淘宝做网站退款竞价推广培训课程
  • 网站搭建工作怎样建立一个网站
  • 南京网站建设 雷仁网络网络推广员是干什么的