@datareset
развиваюсь.

Winsock не может подключиться к питону, что делать?

Приветствую!
Такая проблема: сервер на питоне, нужно через с++ подключиться к нему по сокетам от asyncio, однако с++ этого сделать не может.
Код клиента на С++
int main(){
    WSADATA WsaDat;
    if (WSAStartup(MAKEWORD(2, 2), &WsaDat) != 0)
    {
        std::cout << "Winsock error - Winsock initialization failed\r\n";
        WSACleanup();
        system("PAUSE");
        return 1;
    }
    SOCKET Socket = socket(AF_INET, SOCK_STREAM, 0);
    if (Socket == INVALID_SOCKET)
    {
        std::cout << "Winsock error - Socket creation Failed!\r\n";
        WSACleanup();
        system("PAUSE");
        return 2;
    }
    SOCKADDR_IN addr{};
    addr.sin_addr.s_addr = inet_pton(AF_INET, "127.0.0.1", &(addr.sin_addr.s_addr));
    addr.sin_port = htons(1999);
    addr.sin_family = AF_INET;
    if (connect(Socket, (SOCKADDR*)(&addr), sizeof(addr)) != 0)
    {
        std::cout << "Failed to establish connection with server\r\n";
        WSACleanup();
        system("PAUSE");
        return 3;
    }
    std::cout << "Connected!\n";
    return 0;
}

Код сервера на питоне:
class Server:
    def __init__(self, host, port) :
        self.host = host
        self.port = port
    async def on_client(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
            print(f"Received connection!")
    async def create_server(self):
        while True:
            self.server = await asyncio.start_server(self.on_client, self.host, self.port)
            async with self.server:
                await self.server.serve_forever()
server = Server('127.0.0.1', 1999)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.create_task(server.create_server())
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@datareset Автор вопроса
развиваюсь.
Решение:
Заменить
addr.sin_addr.s_addr = inet_pton(AF_INET, "127.0.0.1", &(addr.sin_addr.s_addr));

На
inet_pton(AF_INET, "127.0.0.1", &(addr.sin_addr.s_addr));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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