wangzhengquan
2020-08-04 2612d4811f72395354fd895daffd494edc46fbfe
fix sendandrecv
3个文件已修改
24 ■■■■ 已修改文件
src/socket/shm_socket.c 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/util/sem_util.c 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test_socket/dgram_mod_req_rep.c 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
    }
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;