Приветствую!
Такая проблема: сервер на питоне, нужно через с++ подключиться к нему по сокетам от 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())