C |套接字不接受通过telnet的连接

时间:2018-07-04 21:23:22

标签: c sockets telnet

首先,这是我的代码:

#include "database.h"
#include "pop3.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>

#define PORT 1234

DBRecord fbPopHost = { "host", "pop3", "localhost" };
DBRecord fbPopPort = { "port", "pop3", "8110" };


int main(void) {
    int pop3socket;
    int clientSocket;
    int len;
    int binden;
    int zuhoeren;

    struct sockaddr_in mailserver;

    /* Socket erstellen */
    pop3socket = socket(AF_INET, SOCK_STREAM, 0);
    if(pop3socket < 0) {
        perror("Fehler beim Erstellen des Sockets!");
    }

    /* IP und Port festlegen mithilfe von Bind */
    memset(&mailserver, 0, sizeof(mailserver)); 
    mailserver.sin_family = AF_INET;
    mailserver.sin_addr.s_addr = htonl(INADDR_ANY);
    mailserver.sin_port = htons(1234);
    binden = (pop3socket, (struct sockaddr*)&mailserver, sizeof(mailserver));
    if(binden < 0) {
        perror("Fehler beim Binden des Sockets");
    }

    /* Warteschlange einrichten */
    zuhoeren = listen(pop3socket, 5);
    if(zuhoeren == -1) {
        perror("Fehler beim Listen");
    }

    /* Verbindung(en) akzeptieren */
    struct sockaddr_in pop3client; /* Client Infos */

    for(;;) {
        len = sizeof(struct sockaddr);
        clientSocket = accept(pop3socket, (struct sockaddr*)&pop3client, &len);
        if(clientSocket < 0) {
            perror("Fehler beim Accepten der Verbindung");
        }
        process_pop3(clientSocket);
    }


}

当我尝试通过telnet建立连接时:

  

telnet localhost 1234

可悲的是说:

  

正在尝试127.0.0.1 ... telnet:无法连接到远程主机:   连接被拒绝

当我启动程序时,它会监听连接,所以我不知道出了什么问题。有人可以帮我吗,这让我感到沮丧吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您实际上应该在此行呼叫bind()

binden = (pop3socket, (struct sockaddr*)&mailserver, sizeof(mailserver));

:-)