网络编程与控制台、文件 I/O 入门
1. 网络编程基础
在网络编程中,服务器和客户端的构建与运行是基础操作。构建并按顺序运行服务器和客户端后,我们能得到相应的输出,这也验证了我们所学的内容。
1.1 服务器性能优化
为了让服务器能够处理多个并发的传入连接,我们可以对服务器应用进行优化。当前实现的服务器算法是顺序执行的,在 listen()
之后,程序会一直等待 accept()
直到结束,然后关闭连接。我们可以按以下步骤进行优化:
1. 在 accept()
上运行一个无限循环,使服务器始终处于就绪状态,随时为客户端提供服务。
2. 为每个接受的连接启动一个新线程,可以使用 std::thread
或 std::async
来实现。
同时,客户端和服务器之间交换的数据也需要我们关注。通常,它们会使用双方都知晓的协议进行通信。例如,Web 服务器会涉及 HTML、文件和资源等的交换;而监控和控制系统可能会使用特定标准定义的协议。
1.2 UDP/IP 通信编程
当进程之间进行通信时,可靠性并非总是选择通信机制的主要标准。在某些情况下,我们更需要快速的通信,而无需承担 TCP 协议为保证可靠性所带来的连接、流量控制等负担。例如视频流、网络电话(VoIP)等场景。下面我们将开发一个客户端和一个服务器程序,以实现基于 UDP 的进程间通信。
服务器端程序(serverUDP.cpp) :