From 2612d4811f72395354fd895daffd494edc46fbfe Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 04 八月 2020 16:27:51 +0800 Subject: [PATCH] fix sendandrecv --- src/socket/shm_socket.c | 5 ++++- src/util/sem_util.c | 3 ++- test_socket/dgram_mod_req_rep.c | 16 +++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/socket/shm_socket.c b/src/socket/shm_socket.c index c6d9dcb..61990e5 100644 --- a/src/socket/shm_socket.c +++ b/src/socket/shm_socket.c @@ -358,10 +358,13 @@ 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; } diff --git a/src/util/sem_util.c b/src/util/sem_util.c index bf08adf..e7c98b9 100644 --- a/src/util/sem_util.c +++ b/src/util/sem_util.c @@ -4,6 +4,7 @@ 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; @@ -113,7 +114,7 @@ while (semtimedop(semId, &sops, 1, timeout) == -1) if (errno != EINTR) { - //err_msg(errno, "SemUtil::dec_timeout"); + err_msg(errno, "SemUtil::dec_timeout"); return -1; } diff --git a/test_socket/dgram_mod_req_rep.c b/test_socket/dgram_mod_req_rep.c index 4ec451f..746ae19 100644 --- a/test_socket/dgram_mod_req_rep.c +++ b/test_socket/dgram_mod_req_rep.c @@ -72,6 +72,20 @@ 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) { @@ -152,7 +166,7 @@ } if (strcmp("client", argv[1]) == 0) - client(port); + client2(port); return 0; -- Gitblit v1.8.0