使用boost-asio在C++和Python程序之间建立客户端服务器

1 投票
1 回答
1556 浏览
提问于 2025-04-18 09:20

我刚开始学习C++,请给我一些建议,告诉我哪里做错了。我需要创建一个客户端和服务器的通信,客户端用Python,服务器用C++。我已经在C++上创建了服务器,它可以正常工作,但我只能用telnet和它进行通信。我的代码是:

#include <iostream>
#include <string>
#include <boost/asio.hpp>

int main()
{
  const int SERVER_PORT = 50013;

  try {
    boost::asio::io_service io_service;
    boost::asio::ip::tcp::endpoint     endpoint(boost::asio::ip::tcp::v4(),SERVER_PORT);
    boost::asio::ip::tcp::acceptor acceptor(io_service, endpoint);
    boost::asio::ip::tcp::socket socket(io_service);

    std::cout << "Server ready" << std::endl;
    {
      acceptor.accept(socket);
      int foo [5] = { 16, 2, 77, 40, 12071 }; 
      boost::asio::write(socket, boost::asio::buffer(foo));
      socket.close();
    }
  }
  catch(std::exception& ex)
  {
    std::cerr << "Exception: " << ex.what() <<std::endl;
  }
  return 0;
}

我想通过Python客户端和它进行通信:

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 50013                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                   # Close the socket when done

但是我在客户端上没有任何结果。

1 个回答

2

但是我在我的客户端上没有任何结果。

其实你是有结果的,只是你理解错了:

s.connect((host, port))
print binascii.hexlify(s.recv(1024))

结果:

10000000020000004d00000028000000272f0000

撰写回答