| | |
| | | int rv; |
| | | |
| | | shm_socket_t *tmp_socket = shm_open_socket(SHM_SOCKET_DGRAM); |
| | | if (shm_sendto(tmp_socket, send_buf, send_size, send_port, timeout, flags) == 0) { |
| | | if ((rv = shm_sendto(tmp_socket, send_buf, send_size, send_port, timeout, flags)) == 0) { |
| | | rv = shm_recvfrom(tmp_socket, recv_buf, recv_size, &recv_port, timeout, flags); |
| | | shm_close_socket(tmp_socket); |
| | | return rv; |
| | | } else { |
| | | shm_close_socket(tmp_socket); |
| | | return rv; |
| | | } |
| | | return -1; |
| | | } |
| | |
| | | static Logger logger = LoggerFactory::getLogger(); |
| | | |
| | | int SemUtil::get(key_t key, unsigned int value) { |
| | | // printf("==================SemUtil::get===============================\n"); |
| | | int semid, perms; |
| | | |
| | | perms = S_IRUSR | S_IWUSR; |
| | |
| | | |
| | | while (semtimedop(semId, &sops, 1, timeout) == -1) |
| | | if (errno != EINTR) { |
| | | //err_msg(errno, "SemUtil::dec_timeout"); |
| | | err_msg(errno, "SemUtil::dec_timeout"); |
| | | return -1; |
| | | } |
| | | |
| | |
| | | dgram_mod_close_socket(socket); |
| | | } |
| | | |
| | | void client2(int port) { |
| | | void *socket = dgram_mod_open_socket(); |
| | | int size; |
| | | void *recvbuf; |
| | | char sendbuf[512]; |
| | | while (true) { |
| | | sprintf(sendbuf, "hello\n" ); |
| | | dgram_mod_sendandrecv(socket, sendbuf, strlen(sendbuf) + 1, port, &recvbuf, &size); |
| | | printf("reply: %s\n", (char *)recvbuf); |
| | | free(recvbuf); |
| | | } |
| | | dgram_mod_close_socket(socket); |
| | | } |
| | | |
| | | |
| | | |
| | | void *runclient(void *arg) { |
| | |
| | | } |
| | | |
| | | if (strcmp("client", argv[1]) == 0) |
| | | client(port); |
| | | client2(port); |
| | | |
| | | |
| | | return 0; |