Visual C ++ WinSock Подключение к серверу VPS, VDS, клиенту и серверу ожидания, как исправить? - PullRequest
0 голосов
/ 13 октября 2019

visual c ++ winSok Подключение к серверу vds, vps (_____-ip) в качестве клиента. Здравствуйте, проблема заключается в следующем: я пишу приложение, и оно должно работать через Интернет. И, следовательно, вам нужен сервер (как физический, так и программный), к которому должно подключиться приложение (фактически я купил бортовой модуль с выделенным ip), и во время теста при попытке отладки ничего не выяснилось. Было решено написать тестовое приложение по образу чата. А при попытке подключения вообще не происходит, то есть такие сообщения, как «Вы, клиент (сокет:» и «Ваш сервер (сокет:»), вообще не отображаются. В чем может быть проблема?

#include "pch.h"
#pragma comment(lib, "ws2_32.lib")

#include <cmath>
#include <winsock2.h>

#pragma warning(disable: 4996)

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

#include "windows.h"
#include "iostream"
#include "dos.h"
#include "stdio.h"
#include "winuser.h"
#include "Windef.h"
#include <fstream>
#include <thread>>
SOCKET h;

SOCKET createServer(const char * ip, long port) //function init socket: conection colient 
{
    SOCKET client;
    SOCKET connectRecept;//socket for litening conection client
    SOCKADDR_IN dataC;
    int sizeofData = sizeof(dataC); //to use in accept and init data socket
    dataC.sin_addr.s_addr = inet_addr(ip);
    dataC.sin_port = htons(port);
    dataC.sin_family = AF_INET;
    connectRecept = socket(AF_INET, SOCK_STREAM, NULL); //init socket
    bind(connectRecept, (SOCKADDR*)&dataC, sizeofData);
    listen(connectRecept, 1);
    client = accept(connectRecept, (SOCKADDR*)&dataC, &sizeofData);
    return client;
}


SOCKET conectTo(const char * ip, long port)//function conection to server(return socket)
{
    SOCKET server;
    SOCKADDR_IN dataC;
    int sizeofData = sizeof(dataC); //to use in init data socket
    dataC.sin_addr.s_addr = inet_addr(ip);
    dataC.sin_port = htons(port);
    dataC.sin_family = AF_INET;
    server = socket(AF_INET, SOCK_STREAM, NULL); //init socket
    bind(server, (SOCKADDR*)&dataC, sizeof(dataC));
    if (connect(server, (SOCKADDR*)&dataC, sizeof(dataC)) != 0) { //conect to server
    }
    return server;
}
int main()
{
    WSAData wsaData;
    WORD DLLVersion = MAKEWORD(2, 1);
    if (WSAStartup(DLLVersion, &wsaData) != 0) {
        std::cout << "Error" << std::endl;
        exit(1);
    }
    char f[40] = { "" };
    std::cin >> f;
    char mess[41] = { "" };

    if (!strcmp(f, "cl")) {
        h = conectTo("________", 1297);
        std::cout << "You client (socket : "<< h << ")\n";
        while (true)
        {
            std::cout << "Write your Messaage:";
            std::cin >> mess;
            send(h, mess, sizeof(char) * 40, NULL);
            recv(h, mess, sizeof(char) * 40, NULL);
            std::cout <<"Server say:" << mess;
        }
    }
    else {
        h = createServer("________", 1297);
        std::cout << "You server (socket : " << h << ")\n";
        while (true)
        {
            recv(h, mess, sizeof(char) * 40, NULL);
            std::cout << "Client" << mess;
            std::cin >> mess;
            std::cout << "Write your Messaage:";
            send(h, mess, sizeof(char) * 40, NULL);
        }
    }

}
...