Разъем в c TCP, как проверить соединение? - PullRequest
0 голосов
/ 07 мая 2020

Для школьного проекта я должен использовать сокеты для создания сервера, я думаю, мне это удалось, но я должен использовать Te lnet для его тестирования, и всякий раз, когда я пытаюсь, я получаю

te lnet: подключиться к адресу 0.0.0.0: в подключении отказано

Так что, я думаю, я ошибаюсь именно с IP.

Упрощенная версия мой код, который все еще должен работать для одного соединения:

int main(int argc , char *argv[])
{
    int sock;
    int fd = 0;
    int err = 0;
    struct sockaddr_in sock_data;
    socklen_t addr_size;
    char *path;

    path = get_current_dir_name();

    if (argc == 2)
        printf("%s", Usage);

    sock = socket(AF_INET , SOCK_STREAM , 0);
    if (sock == -1) {
        printf("Could not create socket");
        return (84);
    }

    memset(&sock_data, 0, sizeof(struct sockaddr_in));
    sock_data.sin_family = AF_INET;
    sock_data.sin_port = htons(5133);
    sock_data.sin_addr.s_addr = htonl(INADDR_ANY);
    printf("%s, %s, %s\n", path, sock_data.sin_addr, inet_ntoa(sock_data.sin_addr));

    if (bind(sock, (const struct sockaddr *) &sock_data, sizeof(sock_data)) == -1)
        printf("Error with binding\n");

    if (listen(sock, LISTEN_BACKLOG) == -1)
        printf("Error with listen");

    addr_size = sizeof(struct sockaddr_in);
    err = accept(sock, (struct sockaddr *) &sock_data, &addr_size);

    while ((sock = accept(sock, NULL, NULL)) < 0)
        err = 0;
    return 84;
}

Я видел эту ссылку: TCP-сокеты в c, это было довольно ясно, но я до сих пор не понимаю, как я Предполагается протестировать мою программу

И чем больше я работаю над ней, тем больше убеждаюсь, что, должно быть, совершил глупую ошибку.

Так вы знаете, где я ошибся?

1 Ответ

3 голосов
/ 07 мая 2020

В вашей команде Te lnet вы пропустили порт. Запятая должна иметь вид

telnet system_ip port

Например

telnet 192.168.1.1 5631
...