如何对 Asterisk 的套接字连接进行故障排除

How to troubleshoot socket connection from Asterisk

我为 asterisk 编写了一个模块,它需要与 return 它的服务请求信息进行通信,但由于某种原因,我的套接字根本没有连接。当我远程登录到该服务时它工作正常,但我不明白为什么它 return 在模块

中是 -1

这是我模块中的代码

int SocketQuery(char buffer[BUFFSIZE],char *qrystr){
            int sock;
            struct sockaddr_in eserver;
            int sockres = 0;
            unsigned char receiving = 1;

            memset(sendbuff,0,sizeof(sendbuff));
            /* Create the TCP socket */
            if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
              ast_log(LOG_ERROR,"Failed to create socket for LCRROUTER");
              return -1;
            }
            /* Construct the server sockaddr_in structure */
            memset(&eserver, 0, sizeof(eserver));       /* Clear struct */
            eserver.sin_family = AF_INET;                  /* Internet/IP */
            eserver.sin_addr.s_addr = inet_addr(IP);  /* IP address */
            eserver.sin_port = htons(port);       /* server port */
            /* Establish connection */
            ast_log(LOG_NOTICE,"LCRROUTER - Connection to %s on port %s\n", IP, port);
            sockres = connect(sock,
                        (struct sockaddr *) &eserver,
                        sizeof(eserver));
            if (sockres < 0) {
              ast_log(LOG_ERROR,"LCRROUTER - Failed to connect with server on %s:%s. Error Code %d", IP,port,sockres);
              return -1;
            }

sockresreturns -1。我错过了什么吗?

您可以使用

 tcpdump port YOUR_PORT_HERE -v -s0

在该表格中,它将显示所有通过套接字发送的数据包。