C 套接字编程,select() 和 fd_set 的问题

标签 c sockets select

我正在学习用 C(指的是 Beej)进行套接字编程。

这是我尝试实现的一个简单的多用户聊天服务器: http://pastebin.com/gDzd0WqP

在运行时,它给出总线错误。它来自第 68-78 行。

帮我追查问题根源?

事实上,为什么我的代码甚至到达了那个特定区域?我刚刚运行服务器。没有客户端连接.. :@

ps - 我知道我的代码非常不可靠(任何地方都没有错误检查),但我会在稍后阶段这样做,我只想在实现它之前测试代码的功能;)

最佳答案

第 81 行

msg[MSG_SIZE] = '\0';` 

超出你的缓冲区。做到这一点

msg[MSG_SIZE - 1] = '\0';` 

您还需要检查所有可能失败的调用的返回值,即第 39、42、45、68 和 80 行

编辑:如果您检查了错误,您可能会看到 accept() 调用失败,这可能是由于套接字未处于监听模式 - 也就是说,您错过了对 的调用听()

关于C 套接字编程,select() 和 fd_set 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540020/

相关文章:

c - unix中绑定(bind)端口 "Address already in use"TCP套接字编程错误

linux - BSD套接字不工作

angularjs - Socket.io 未断开连接,xhr-polling 400 错误请求

c - STDIN 和传入套接字上的 select()

sql-server - SQL : Using three SELECT statements in a single query

计算行列式并使用 uint64_t C 类型的除法和乘法

c - 正值输入 C

c++ - 简单的客户端/服务器 TCP c++

mysql - 如何通过一个 SQL 查询获得多个 SUM?

c - C 代码中的问题