#include #include #include #include #include using namespace std; const int BUFFER_SIZE{1000}; const string SERVER_PATH{"/tmp/msgServer"}; int main(int argc, char * argv[]) { int socketFD{socket(AF_UNIX,SOCK_DGRAM, 0)}; if (socketFD == -1) { perror("Error socket: "); return 1; } struct sockaddr_un address; int addrLen = sizeof(struct sockaddr_un); pid_t pid {getpid()}; cout << "My pid is " << pid << endl; string path = "/tmp/pid" + to_string(pid); memset(&address, 0, addrLen); address.sun_family = AF_UNIX; strncpy(address.sun_path, path.c_str(), sizeof(address.sun_path)-1); if (bind(socketFD, reinterpret_cast(&address), addrLen) == -1) { perror("Error bind: "); unlink(path.c_str()); return 1; } struct sockaddr_un serverAddress; memset (&serverAddress, 0, addrLen); serverAddress.sun_family = AF_UNIX; strncpy(serverAddress.sun_path, SERVER_PATH.c_str(), sizeof(serverAddress.sun_path)-1); char buffer[BUFFER_SIZE]; for(int i = 1; i < argc; ++i) { sendto(socketFD, argv[i], strlen(argv[i]), 0, reinterpret_cast(&serverAddress), addrLen ); memset(buffer, 0, BUFFER_SIZE); recvfrom(socketFD, buffer, BUFFER_SIZE, 0, nullptr, nullptr); cout << "Got back a " << buffer << endl; } close(socketFD); unlink(path.c_str()); return 0; }