#include #include #include #include #include #include #include #include "transfer.h" using namespace std; int main() { // TODO: read image data from socket instead of VideoCapture // creating socket int serverSocket = socket(AF_INET, SOCK_STREAM, 0); // specifying the address sockaddr_in serverAddress; serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(8080); serverAddress.sin_addr.s_addr = INADDR_ANY; // binding socket. bind(serverSocket, reinterpret_cast(&serverAddress), sizeof(serverAddress)); info("Ready to accept connections."); // listening to the assigned socket listen(serverSocket, 5); // accepting connection request int clientSocket = accept(serverSocket, nullptr, nullptr); info("Client connected."); // TODO: handle multiple images cv::Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3); bool running = true; // TODO: make this asynchronous. probably do that in tandem with setting up networking while (running) { // receive data vector buffer; trace("Receiving image"); recvImage(clientSocket, buffer); trace("Applying new data to image"); applyImage(image, &buffer); trace("Displaying image"); imshow("image", image); running = cv::waitKey(30) != 27; } close(serverSocket); return 0; }