Задать вопрос
mrjbom
@mrjbom

Клиент не подключается к серверу VDS?

Есть амазоновский дедик, написал сервер для Linux и клиент на Windows(переписал на основе Lunux'овского), после запуска сервера и клиента, клиент не коннектится.
Так-же пробовал указывать вместо внешнего IP(на серверной стороне), так:
addr_struct.sin_addr.s_addr = htonl(INADDR_ANY);
Но это не помогает, подключения нет.

Серверная сторона на дедике Linux
#include <cstring>
#include <clocale>
#include <iostream>
#include <netinet/in.h>
#include <arpa/inet.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Rus");
    char buff[256] = { "void" };
    int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    sockaddr_in addr_struct;
    addr_struct.sin_family = AF_INET;
    addr_struct.sin_addr.s_addr = htonl(inet_addr("Внешний IP дедика"));
    addr_struct.sin_port = htons(5257);
    bind(sock, (struct sockaddr*)&addr_struct, sizeof(addr_struct));
    listen(sock, SOMAXCONN);
    cout << "Ожидаем клиент-собеседника\n";
    int sock1 = accept(sock, 0, 0);
    cout << "Соединение установленно\n";
    while(1)
    {
        cout << "Ожидаем сообщение...\n";
        recv(sock1, &buff, sizeof(buff), MSG_NOSIGNAL);

        cout << "Входящее сообщение: " << buff << "\n";
        cout << "Ввод сообщения: ";
        cin >> buff;
        send(sock1, buff, sizeof(buff), MSG_NOSIGNAL);
    }
    return 0;
}


Клиентская сторона на Windows
//client for Linux

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <clocale>
#include <sys/types.h>
#include <Windows.h>
#include <tcpestats.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main()
{
	setlocale(LC_ALL, "Rus");
	char buff[256] = { "void" };
	int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	sockaddr_in addr_struct;
	addr_struct.sin_family = AF_INET;
	//addr_struct.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
	addr_struct.sin_addr.s_addr = htonl(inet_addr("Внешний IP дедика"));
	addr_struct.sin_port = htons(5257);
	cout << "Подключаемся к сервер-собеседнику\n";
	if (connect(sock, (struct sockaddr *)&addr_struct, sizeof(addr_struct)) == -1)
	{
		cout << "Произошла ошибка при подключении к серверу-собеседнику\n";
		return 0;
	}
	while (strcmp(buff, "end"))
	{
		cout << "Ввод сообщения: ";
		cin >> buff;
		send(sock, buff, sizeof(buff), MSG_DONTROUTE);
		cout << "Ожидаем сообщение...\n";
		recv(sock, buff, sizeof(buff), MSG_DONTROUTE);
		cout << "Входящее сообщение: " << buff << "\n";
	}
	return 0;
}
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы