多线程服务器客户端代码

下跪

我正在为多线程服务器编写代码。我遇到了这个问题:如何创建一个为每个客户端创建新线程的服务器?

我正在使用建议的第一条评论更改来使用已接受答案的框架。我唯一的问题是我不明白评论的含义。为什么我必须同步对client_sock的访问?我已经阅读了下面的注释中的描述,但是由于仅在接受()完成后才处理pthread行,它如何创建竞争条件?另外,为什么(void *)会有所帮助?

另外,请解释

添加信号量或其他同步对象

一些程序员哥们

至于强制转换,的最后一个参数pthread_create指针,它将是线程函数的参数。如果要传递不是指针的内容,则需要将其强制转换为指针,并在线程函数中进行相应的强制转换以恢复原始类型。

骨架有缺陷并且需要传递套接字的实际值(传递给指针)的原因是,否则所有线程将使用完全相同的套接字,并且较早的线程将“神奇地”开始读取和写入数据最后接受的套接字。至少没有同步,这就是信号量的来源。

如果使用信号量(或其他同步原语)保护接受的套接字,则仍然可以传递指针,并在线程复制完实际的套接字值后在线程中释放该信号量。

因此,您需要执行类似(伪代码)的操作

while (not_exit_server_program)
{
    wait_for_new_connection_to_arrive();
    wait_for_semaphore(socket_semaphore);
    new_socket = accept(...);
    pthread_create(..., &new_socket);
}

然后在线程功能

void *client_thread_function(void *pointer_to_socket)
{
    int socket = *(int *) pointer_to_socket;
    release_semaphore(socket_semaphore);

    ... rest of function
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

服务器多线程一次仅回答一个客户端

来自分类Dev

用C语言实现多线程服务器/客户端

来自分类Dev

了解C语言中的多线程服务器/客户端程序

来自分类Dev

多线程UDP客户端/服务器C#

来自分类Dev

如何使用多线程允许多个客户端连接到服务器?

来自分类Dev

多线程服务器仅从一个客户端JAVA接收数据

来自分类Dev

Java中的多线程客户端服务器聊天应用程序

来自分类Dev

从Java多线程客户端-服务器architecutre中的run()方法调用方法

来自分类Dev

多线程客户端/服务器,套接字异常

来自分类Dev

多线程服务器退出,而无需等待客户端的连接

来自分类Dev

服务器多线程一次仅回答一个客户端

来自分类Dev

Java多线程套接字客户端/服务器:发送和接收Enummap对象

来自分类Dev

(C)在多线程客户端和服务器中使用互斥锁

来自分类Dev

多线程客户端/服务器原型中的分段错误

来自分类Dev

使用多线程Java服务器获取客户端ID

来自分类Dev

具有多线程服务器(TCP / IP)的客户端/服务器聊天室

来自分类Dev

为什么UDP服务器不需要多线程即可同时为多个客户端提供服务?

来自分类Dev

当多个客户端尝试连接时,多线程服务器给出“无法访问已处置的对象”错误

来自分类Dev

C#多线程服务器-通用客户端集合可能是一个问题

来自分类Dev

我如何在C中对该TCP服务器/客户端进行多线程处理?

来自分类Dev

Java UDP 客户端未从服务器接收(简单的客户端服务器 udp 代码)

来自分类Dev

python多线程服务器无法从客户端接收数据

来自分类Dev

客户端-服务器插座

来自分类Dev

测试客户端服务器

来自分类Dev

客户端/服务器编程

来自分类Dev

iOS客户端服务器

来自分类Dev

SocketChannel 客户端-服务器

来自分类Dev

客户端代码更新服务器端代码

来自分类Dev

如何在Python中制作一个能记住客户端的简单多线程套接字服务器

Related 相关文章

  1. 1

    服务器多线程一次仅回答一个客户端

  2. 2

    用C语言实现多线程服务器/客户端

  3. 3

    了解C语言中的多线程服务器/客户端程序

  4. 4

    多线程UDP客户端/服务器C#

  5. 5

    如何使用多线程允许多个客户端连接到服务器?

  6. 6

    多线程服务器仅从一个客户端JAVA接收数据

  7. 7

    Java中的多线程客户端服务器聊天应用程序

  8. 8

    从Java多线程客户端-服务器architecutre中的run()方法调用方法

  9. 9

    多线程客户端/服务器,套接字异常

  10. 10

    多线程服务器退出,而无需等待客户端的连接

  11. 11

    服务器多线程一次仅回答一个客户端

  12. 12

    Java多线程套接字客户端/服务器:发送和接收Enummap对象

  13. 13

    (C)在多线程客户端和服务器中使用互斥锁

  14. 14

    多线程客户端/服务器原型中的分段错误

  15. 15

    使用多线程Java服务器获取客户端ID

  16. 16

    具有多线程服务器(TCP / IP)的客户端/服务器聊天室

  17. 17

    为什么UDP服务器不需要多线程即可同时为多个客户端提供服务?

  18. 18

    当多个客户端尝试连接时,多线程服务器给出“无法访问已处置的对象”错误

  19. 19

    C#多线程服务器-通用客户端集合可能是一个问题

  20. 20

    我如何在C中对该TCP服务器/客户端进行多线程处理?

  21. 21

    Java UDP 客户端未从服务器接收(简单的客户端服务器 udp 代码)

  22. 22

    python多线程服务器无法从客户端接收数据

  23. 23

    客户端-服务器插座

  24. 24

    测试客户端服务器

  25. 25

    客户端/服务器编程

  26. 26

    iOS客户端服务器

  27. 27

    SocketChannel 客户端-服务器

  28. 28

    客户端代码更新服务器端代码

  29. 29

    如何在Python中制作一个能记住客户端的简单多线程套接字服务器

热门标签

归档