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

建立网站时首先考虑的问题慈溪网站建设哪家好

建立网站时首先考虑的问题,慈溪网站建设哪家好,高端旅游网站建设,做网站人员工资全双工#xff1a; 通信双方 既可以发送#xff0c;也可以接收数据 1. 利用多线程 或者 多进程#xff0c; 实现TCP服务器 和 客户端的全双工通信 思路#xff1a; 服务器和客户端#xff0c; 在建立通信以后#xff0c;可以创建线程#xff0c;在线程编写另一个功能代… 全双工 通信双方 既可以发送也可以接收数据 1. 利用多线程 或者 多进程 实现TCP服务器 和 客户端的全双工通信 思路 服务器和客户端 在建立通信以后可以创建线程在线程编写另一个功能代码 客户端参考 pthread_handler() {while(1){fgets();send(); } }main() {socket();connect();pthread_create();while(1){recv(); } }服务器参考 pthread_handler() {while(1){ fgets();send(); } }main() {socket();bind();listen();accept();pthread_create();while(1){recv(); } } 客户端示例代码 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/socket.h #include arpa/inet.h #include pthread.h#define BUFFER_SIZE 1024// 接收线程函数 void *client_recv_thread(void *arg) {int sock *(int *)arg; // 从参数中获取socket描述符char buffer[BUFFER_SIZE]; // 用于接收数据的缓冲区while (1) {memset(buffer, 0, BUFFER_SIZE); // 清空缓冲区ssize_t bytes_received recv(sock, buffer, BUFFER_SIZE - 1, 0); // 接收数据if (bytes_received 0) {perror(接收数据失败);break; // 如果接收失败结束线程}printf(收到信息: %s, buffer); // 打印接收到的信息}pthread_exit(NULL); // 结束线程 }int main() {int sock; // 客户端socket描述符struct sockaddr_in server; // 服务器地址结构char buffer[BUFFER_SIZE]; // 用于发送数据的缓冲区sock socket(AF_INET, SOCK_STREAM, 0); // 创建socketif (sock -1) {perror(无法创建socket);return 1;}server.sin_addr.s_addr inet_addr(127.0.0.1); // 设置服务器IP地址server.sin_family AF_INET; // 设置为Internet协议族server.sin_port htons(8888); // 设置服务器端口if (connect(sock, (struct sockaddr *)server, sizeof(server)) 0) { // 连接到服务器perror(连接失败);return 1;}pthread_t thread_id; // 线程IDif (pthread_create(thread_id, NULL, client_recv_thread, sock) ! 0) { // 创建接收线程perror(创建线程失败);return 1;}while (1) { // 主循环用于发送数据printf(输入信息: );fgets(buffer, BUFFER_SIZE, stdin); // 从标准输入读取一行send(sock, buffer, strlen(buffer), 0); // 发送数据}close(sock); // 关闭socketreturn 0; } 服务器代码 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/socket.h #include arpa/inet.h #include pthread.h#define MAX_THREADS 10 #define BUFFER_SIZE 1024// 接收线程函数 void *server_recv_thread(void *arg) {int sock *(int *)arg; // 从参数中获取socket描述符char buffer[BUFFER_SIZE]; // 用于接收数据的缓冲区while (1) {memset(buffer, 0, BUFFER_SIZE); // 清空缓冲区ssize_t bytes_received recv(sock, buffer, BUFFER_SIZE - 1, 0); // 接收数据if (bytes_received 0) {perror(接收数据失败);break; // 如果接收失败结束线程}printf(收到信息: %s, buffer); // 打印接收到的信息}pthread_exit(NULL); // 结束线程 }int main() {int sock, client_sock; // 服务器socket描述符客户端socket描述符struct sockaddr_in server, client; // 服务器和客户端地址结构pthread_t thread_id; // 线程IDsock socket(AF_INET , SOCK_STREAM , 0); // 创建socketif (sock -1) {perror(无法创建socket);return 1;}server.sin_family AF_INET; // 设置为Internet协议族server.sin_addr.s_addr INADDR_ANY; // 监听所有可用接口server.sin_port htons(8888); // 设置服务器端口if (bind(sock, (struct sockaddr *)server , sizeof(server)) 0) { // 绑定socketperror(绑定失败);return 1;}listen(sock, 3); // 开始监听连接printf(等待接收连接...\n);while (1) { // 主循环用于接受新连接socklen_t len sizeof(struct sockaddr_in); // 地址长度client_sock accept(sock, (struct sockaddr *)client, len); // 接受连接if (client_sock 0) {perror(接受连接失败);return 1;}if (pthread_create(thread_id, NULL, server_recv_thread, client_sock) ! 0) { // 创建接收线程perror(创建线程失败);return 1;}}close(sock); // 关闭socketreturn 0; } TCP建立的初衷是 1 对 1 的通信 其本身机制无法完成并发服务器 只能借助其他方法。。。。。 这里不要求实现全双工 2. 利用多线程 或者 多进程实现TCP服务器 可以同时跟多个客户端通信(并发服务器) 思路 每次accept建立通信 服务器都创建一个专属的线程任务与客户端通信 服务器在通信时主要依靠的是acceptfd每次acceptfd的值都代表不同的通信套接字 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/socket.h #include arpa/inet.h #include pthread.h#define MAX_THREADS 10 // 线程池中线程的最大数量 #define BUFFER_SIZE 1024 // 缓冲区大小// 客户端信息结构体 typedef struct {int sock; // 客户端socket描述符 } client_info;// 客户端处理线程函数 void *handle_client(void *arg) {client_info *info (client_info *)arg; // 从参数中获取客户端信息int client_sock info-sock; // 获取客户端socketchar buffer[BUFFER_SIZE]; // 缓冲区用于接收和发送数据// 循环接收并处理客户端数据while (1) {memset(buffer, 0, BUFFER_SIZE); // 清空缓冲区ssize_t bytes_received recv(client_sock, buffer, BUFFER_SIZE - 1, 0); // 接收数据if (bytes_received 0) {printf(客户端断开连接\n);close(client_sock); // 如果客户端断开关闭socketfree(info); // 释放客户端信息结构体pthread_exit(NULL); // 结束线程} else {printf(接收到客户端信息: %s, buffer); // 打印接收到的信息send(client_sock, buffer, bytes_received, 0); // 将接收到的数据原样返回给客户端}} }int main() {int sock, client_sock; // 服务器和客户端socket描述符struct sockaddr_in server, client; // 服务器和客户端地址信息pthread_t thread_id[MAX_THREADS]; // 线程ID数组int active_threads 0; // 当前线程数量// 创建服务器socketsock socket(AF_INET, SOCK_STREAM, 0);if (sock -1) {perror(无法创建socket);return 1;}// 设置服务器地址信息server.sin_family AF_INET;server.sin_addr.s_addr INADDR_ANY;server.sin_port htons(8888);// 绑定服务器地址if (bind(sock, (struct sockaddr *)server, sizeof(server)) 0) {perror(绑定失败);return 1;}// 开始监听连接listen(sock, 3);printf(等待接收连接...\n);// 主循环用于接受新连接while (1) {socklen_t len sizeof(struct sockaddr_in);client_sock accept(sock, (struct sockaddr *)client, len);if (client_sock 0) {perror(接受连接失败);continue;}// 检查线程池是否已满if (active_threads MAX_THREADS) {printf(线程数量已达到上限拒绝连接\n);close(client_sock); // 如果线程池已满关闭新连接的socketcontinue;}// 分配并初始化客户端信息结构体client_info *info malloc(sizeof(client_info));info-sock client_sock;// 创建线程处理新连接if (pthread_create(thread_id[active_threads], NULL, handle_client, info) ! 0) {perror(创建线程失败);continue;}// 增加活动线程数量active_threads;}// 等待所有线程结束for (int i 0; i active_threads; i) {pthread_join(thread_id[i], NULL);}// 关闭服务器socketclose(sock);// 正常退出return 0; }
http://www.w-s-a.com/news/120070/

相关文章:

  • 河南省和建设厅网站首页西安找建网站公司
  • 网页设计基础代码网站进出成都最新通知
  • 如何创建网站乐清网络科技有限公司
  • 沈阳市网站制作艺术字体logo设计生成器
  • 网站设计常用软件都有哪些中国建设银行官方招聘网站
  • 证券投资网站建设视频直播怎么赚钱的
  • 建设酒店网站ppt模板下载郑州小程序设计外包
  • 网站建设自我总结google推广公司
  • 安全网站建设情况wordpress 评论表单
  • 网站建设发言材料个人网站推广软件
  • php建站软件哪个好南京哪家做网站好
  • 排名好的手机网站建设番禺网站建设专家
  • 番禺怎么读百度有专做优化的没
  • 网站开发中应注意哪些问题网络营销的主要特点
  • 网站定制案例北京网站制作招聘网
  • 网站建设与推广实训小结网站建设专业英文
  • 郑州网站建设动态凡科网站建设是免费的吗
  • 湖北手机网站建设wordpress转emlog博客
  • 北京东站设计网名的花样符号
  • 安徽建设厅网站首页网站开发aichengkeji
  • 自贡网站制作荣茂网站建设
  • 什么做的网站吗正规的机械外包加工订单网
  • 网络工程公司的业务邵阳seo快速排名
  • 博主怎么赚钱网站seo找准隐迅推
  • 营销号经典废话北京网站建设公司网站优化资讯
  • 一六八互联网站建设怎么做套版网站
  • wordpress 书站建筑公司简介范文大全
  • 建设官方网站多少鲜花网站建设的主要工作流程
  • 卖主机网站轻量wordpress主题
  • 网站建设规划书结构制作一个自己的网站