Simple TCP/IP socket comunication wrapper between c++ and Python for IPC.
Project description
IMPORTANT NOTE: This is more an exercice for me to learn how to make installable packages than an actual useful repo.
IMPORTANT NOTE: It is not finished, so expect errors, a lot of missing stuff and most of what is written here does not apply if you are reading from pipi.org. Will update soon.
cpp_python_socket
Simple TCP/IP socket comunication wrapper between c++ and Python for IPC.
General Information
- Branch master covers simple string communication, relies on standard libraries.
- Branch image_transferring adds image transferring capabilities, relies on:
- OpenCV for c++:
https://github.com/opencv/opencvBuild
- OpenCV for Python:
pip install opencv-python
Only tested in Ubuntu 16.04, write an issue should you find any error.
Quick Start
- Either clone or add as a submodule this repo to your project folder:
git clone https://github.com/OleguerCanal/cpp_python_socket.git
or
git submodule add https://github.com/OleguerCanal/cpp_python_socket.git
- [OPTIONAL] Change branch to enable image transferring:
cd cpp_python_socket/
git checkout image_transferring
- If intending to use C++ code, add this 3 things to your CMakeLists.txt:
add_subdirectory(cpp_python_socket)
- Append
cpp_python_socket/cpp/include
toinclude_directories(...
- Append
cpp_sockets
totarget_link_libraries(...
of your library/executable.
Test the code
-
Change directory
cd cpp_python_socket/
-
Build it:
./build.sh
-
Run unit test:
- Terminal 1:
python python/server_unit_test.py
- Terminal 2:
cd cpp;
./run_cpp_client_test.sh
Usage examples
Python Server:
from cpp_python_socket.python.server import Server
if __name__ == "__main__":
server = Server("127.0.0.1", 5002)
# Check that connection works
message = server.receive()
print("[CLIENT]:" + message)
server.send("Shut up and send an image")
# Receive and show image
image = server.receive_image()
cv2.imshow('SERVER', image)
cv2.waitKey(1000)
server.send("Okioki")
C++ client:
#include <iostream>
#include "client.hpp"
int main() {
socket_communication::Client client("127.0.0.1", 5002);
// Check that connection works
client.Send("Hello hello!");
std::string answer = client.Receive();
std::cout << "Server: " << answer << std::endl;
// Load image and send image
cv::Mat img = cv::imread("cpp/lena.png");
client.SendImage(img);
std::string answer2 = client.Receive();
std::cout << "Server: " << answer2 << std::endl;
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for CppPythonSocket-0.1.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8b17aabc0449e42cb488da3be3754d1c8aa4bc61adc7e7adf0f3ebce581ed9c |
|
MD5 | 21b8c834fc6f05d9c32ed7e644d728d9 |
|
BLAKE2b-256 | 3a840e3b4b6cfd100326b999f127dd292e86c197f122d787f01dbb6d3a8ea39b |