警告:我对C和内存管理以及所有这些内容(来自解释/ JITed语言)都很陌生。
所以我正在创建一个用于轻松创建TCP服务器的小型库(作为网络编程中的练习)。使用示例如下所示:
#include <stdio.h>
#include "ohsimpletcp.h"
void echo(int socket_fd) {
char *message = malloc(100 * sizeof(char));
while (ost_receive(socket_fd, message, 100) > 0) {
ost_send(socket_fd, message);
}
}
int main() {
if (ost_serve(1337, echo) == -1) {
perror("An error occurred");
return 1;
}
return 0;
}
但是我的问题是,为了让这个东西能够顺利地同时用于大量客户端,我是否需要为后端中的每个连接客户端创建一个新进程?或者我可以用select()
以某种方式解决这个问题吗?
ohsimpletcp.h:
#ifndef REG4IN_OST_H
#define REG4IN_OST_H 1
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
int ost_serve(int port, void (*handler)(int socket_fd));
int ost_send(int socket_fd, char *message);
int ost_receive(int socket_fd, char *message, int length);
#endif