#include #include #include #include #include #include #include #include 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, (struct sockaddr*)&serverAddress, sizeof(serverAddress)); // listening to the assigned socket listen(serverSocket, 5); // accepting connection request int clientSocket = accept(serverSocket, nullptr, nullptr); // TODO: handle multiple images cv::Mat image = cv::Mat::zeros(480, 640, CV_8UC3); // setup packet buffer char buffer[IMAGEPACKET_SIZE] = { 0 }; ImagePacket packet = ImagePacket(&image, 0); bool running = true; // TODO: make this asynchronous. probably do that in tandem with setting up networking while (running) { // receive data recv(clientSocket, buffer, sizeof(buffer), 0); packet.deserialize(buffer); cout << "received packet with index " << packet.getBegin() << endl; packet.apply(&image); imshow("image", image); running = cv::waitKey(30) != 27; } close(serverSocket); return 0; }