TCP服务器 - 每个客户端的新流程?

时间:2015-06-16 11:18:23

标签: c networking tcp process

警告:我对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

0 个答案:

没有答案