c - 如何创建一个为每个客户端创建一个新线程的服务器?

标签 c sockets client-server

我需要创建一个服务器,为每个尝试连接到服务器的客户端创建一个新线程。为每个客户端创建的新线程管理客户端,服务器进程监听来自端口的新连接。

我需要在 Unix C 中编码。这是我需要尽快完成的任务的子任务。我是这个领域的新手,因此对创建服务器不太了解。

最佳答案

基本上,您正在寻找的是这样的:

#include <sys/types.h>
#include <sys/socket.h>
#include <pthread.h>

void* handle_connection(void *arg)
{
    int client_sock = *(int*)arg;
    /* handle the connection using the socket... */
}

int main(void)
{
    /* do the necessary setup, i.e. bind() and listen()... */
    int client_sock;
    pthread_t client_threadid;
    while((client_sock = accept(server_sock, addr, addrlen)) != -1)
    {
        pthread_create(&client_threadid,NULL,handle_connection,&client_sock);
    }
}

这是服务器应用程序的一个非常基本的框架,它为每个传入的客户端连接创建一个不同的线程。如果您不知道什么是bindlistenaccept,请参阅本地手册的第二部分。

关于c - 如何创建一个为每个客户端创建一个新线程的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074375/

相关文章:

c - usleep() 计算耗时表现得很奇怪

c - 实现从DS18B20读取温度并在LCD上显示的功能

c - 从二叉树搜索中删除节点

c# - Java TCP 客户端和 C# 服务器;客户端仅在服务器关闭后才收到消息

http - 通过 HTTP 请求跟踪客户端

无法使用 execv() 执行程序

sockets - Nodejs Websocket 关闭事件调用...最终

c - 如何正确使用 select() 中的 except_set?

c# - 通过套接字TargetInvocationException进行二进制序列化/反序列化

Java rmi,区分多个客户端