如何将CC++网络编程中的UDP服务器端和客户端改写为支持长尾词处理的服务器?
- 内容介绍
- 文章标签
- 相关推荐
本文共计507个文字,预计阅读时间需要3分钟。
通过前面几节课的内容,我们已经能够实现基本的C/S结构程序了。然而,当多个客户端同时向服务器端请求服务时,服务器端只能按顺序依次处理每个请求,导致用户等待时间较长。在这种情况下,客户端的用户体验较差。
通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的。所以虚实现并发的服务器端。
并发服务器端的实现方法:
1:多进程服务器端:通过创建多个进程提供服务。
2:多路复用服务器:用过捆绑并统一管理I/O对象提供服务。
3:多线程服务器:通过生成与客户端等量的线程提供服务。
多进程服务器端:
进程:可执行程序的一次执行过程。
在linux下可通过fork()函数创建一个进程。
#include <unistd.h> pid_t fork(void) // 成功返回时父进程返回子进程的id,子进程返回0,失败时返回-1
通过fork()函数创建进程以后,父进程和子进程拥有完全独立的内存空间。举例:
#include <iostream> #include <unistd.h> using namespace std; int g_count = 10; int main() { int l_count = 20; g_count++; l_count++; pid_t pid = fork(); if (pid < 0) { cout << "fork() failed" << endl; return 0; } if (pid == 0) { g_count += 5; l_count += 5; } else { g_count -= 5; l_count -= 5; } if (pid == 0) { cout << "child: " << g_count <<" " << l_count << endl; } else { cout << "parent: " << g_count <<" " << l_count << endl; } return 0; }
本文共计507个文字,预计阅读时间需要3分钟。
通过前面几节课的内容,我们已经能够实现基本的C/S结构程序了。然而,当多个客户端同时向服务器端请求服务时,服务器端只能按顺序依次处理每个请求,导致用户等待时间较长。在这种情况下,客户端的用户体验较差。
通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的。所以虚实现并发的服务器端。
并发服务器端的实现方法:
1:多进程服务器端:通过创建多个进程提供服务。
2:多路复用服务器:用过捆绑并统一管理I/O对象提供服务。
3:多线程服务器:通过生成与客户端等量的线程提供服务。
多进程服务器端:
进程:可执行程序的一次执行过程。
在linux下可通过fork()函数创建一个进程。
#include <unistd.h> pid_t fork(void) // 成功返回时父进程返回子进程的id,子进程返回0,失败时返回-1
通过fork()函数创建进程以后,父进程和子进程拥有完全独立的内存空间。举例:
#include <iostream> #include <unistd.h> using namespace std; int g_count = 10; int main() { int l_count = 20; g_count++; l_count++; pid_t pid = fork(); if (pid < 0) { cout << "fork() failed" << endl; return 0; } if (pid == 0) { g_count += 5; l_count += 5; } else { g_count -= 5; l_count -= 5; } if (pid == 0) { cout << "child: " << g_count <<" " << l_count << endl; } else { cout << "parent: " << g_count <<" " << l_count << endl; } return 0; }

