1

我编写了一个小型代理服务器,它侦听端口 25 并执行一些操作。

在安全 SMTP 的情况下,我派生一个进程并让子进程接管此会话。

思考过程是这个子进程应该是满足特定客户请求的子进程。如果有另一个客户端发送邮件(安全),那么我需要分叉另一个进程。

但是发生的事情是,一旦子进程处理了客户端请求,它就会继续侦听,但不迎合这个客户端。父进程已经在监听这个套接字,所以每次都派生一个新进程。

我该如何处理这种情况?如果已经为客户端(IP 地址)分叉了一个进程,则不应发生新的分叉。现有的子进程应该处理这些请求。

该程序基于 C 语言并在 linux 上运行。

4

1 回答 1

1

在客户端进程中保留发送者的信息。当您收到新的 SMTP 邮件时,请检查发件人是否与以前相同。如果是,请不要分叉给新客户端。

如果这不能回答您的问题,请包含代码的基本部分,以便我们可以看到逻辑错误可能存在的位置。

于 2013-05-15T05:46:51.913 回答