C套接字,服务器和客户端。连接错误:"没有到主机的路由"

时间:2016-12-24 11:50:36

标签: c sockets server client

我已经编写了客户端代码和服务器,但是,连接存在问题:"没有到主机的路由"。这很奇怪,因为客户端和服务器在不同的网络中运行。另外,如果我ping [my ip]告诉我超时,如果我telnet [my ip]告诉我错误。你能告诉我如何解决这个问题吗?我从路由器打开端口2222,但它似乎仍然无法正常工作。 对不起我的英文

客户代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>

#define ADDRESS "[IP]"  
#define PORT 2222 

int main()
{
    int sockid;
    struct sockaddr_in c_address;
    printf("[CLIENT] Eseguito.\n");

    c_address.sin_family = AF_INET;
    c_address.sin_addr.s_addr = inet_addr(ADDRESS);
    c_address.sin_port = htons(PORT);

    sockid = socket(AF_INET, SOCK_STREAM, 0);
    int sock_conn;
    sock_conn = connect(sockid, (struct sockaddr *)&c_address, sizeof(c_address));
    if(sock_conn == -1)
    {
        perror("Connect client");
        exit(EXIT_FAILURE);
    }
    while(1)
    {
        char text[128];
        printf("[CLIENT] Scrivi qualcosa: ");
        fgets(text, 128, stdin);
        write(sockid, text, 128);
        read(sockid, text, 128);
        printf("[CLIENT] Testo ricevuto: %s.\n", text);
    }
}

服务器代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>

#define PORT 2222 

void toggleCharacter(char *str);

int main()
{
    int sockid;
    struct sockaddr_in s_address;
    printf("[SERVER] Eseguito.\n");

    s_address.sin_family = AF_INET;
    s_address.sin_addr.s_addr = htonl(INADDR_ANY);
    s_address.sin_port = htons(PORT);

    sockid = socket(AF_INET, SOCK_STREAM, 0);
    if(bind(sockid, (struct sockaddr *)&s_address, sizeof(s_address)) == -1)
    {
        perror("Bind server");
        exit(EXIT_FAILURE);
    }
    if(listen(sockid, 5) == -1)
    {
        perror("Listen server");
        exit(EXIT_FAILURE);
    }
    int connection_socket;
    connection_socket = accept(sockid, NULL, 0);
    if(connection_socket == -1)
    {
        perror("Accept server");
        exit(EXIT_FAILURE);
    }
    char text[128];
    while(1)
    {
        read(connection_socket, text, 128);
        printf("[SERVER] Messaggio ricevuto: %s.\n", text);
        printf("[SERVER] Scrivi qualcosa: ");
        fgets(text, 128, stdin);
        write(connection_socket, text, 128);
    }
    close(connection_socket);
}

0 个答案:

没有答案