C语言 如何编辑 sctp.h 以添加SO_REUSEADDR



我在SCTP的两个RPM软件包下运行。 lksctp-tools-1.0.11 lksctp-tools-devel-1.0.11

我的 sctp 头文件位于/usr/include/netinet/sctp.h 中,该文件具有绑定方法但没有侦听方法。

int sctp_bindx(int sd, struct sockaddr *addrs, int addrcnt, int flags);
int sctp_connectx(int sd, struct sockaddr *addrs, int addrcnt,
sctp_assoc_t *id);
int sctp_peeloff(int sd, sctp_assoc_t assoc_id);
/* Prototype for the library function sctp_opt_info defined in
* API 7. Socket Options.
*/
int sctp_opt_info(int sd, sctp_assoc_t id, int opt, void *arg, socklen_t *size);

我想在此代码中使用SO_REUSEADDR来解决内核 2.6.32 的 SCTP 中的"地址已在使用"错误。

我了解到下面的代码片段可以帮助添加SO_REUSEADDR但我不知道在哪里/如何添加代码:

int on = 1;
...
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on);
bind(s, (struct sockaddr *) &sin, sizeof sin);

我没有接受过套接字编程方面的教育,但我正在解决这个问题,因为在端口 3868 上,客户端请求是由远程 java 进程发出的,该进程抛出"地址已在使用中"错误,因为其他一些 TCP 进程将使用相同的端口

了解到下面的代码片段可以帮助添加SO_REUSEADDR但我不知道在哪里/如何添加代码

您需要添加 2 行:

int on = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on);

在创建带有socket调用的套接字之后,但在bind之前。

相关内容

  • 没有找到相关文章

最新更新