wangzhengquan
2021-02-04 83956b12d863924936a98c9dfbece37feb0cce9c
test_net_socket/test_net_mod_socket.cpp
@@ -133,21 +133,30 @@
 
void start_reply(int key) {
void start_reply(int mkey) {
  printf("start reply\n");
  void *ser = net_mod_socket_open();
  net_mod_socket_bind(ser, key);
  int size;
  void *recvbuf;
  net_mod_socket_bind(ser, mkey);
  char sendbuf[512];
  int rv;
  int remote_port;
  while ( (rv = net_mod_socket_recvfrom(ser, &recvbuf, &size, &remote_port) ) == 0) {
   // printf( "server: RECEIVED REQUEST FROM PORT %d NAME %s\n", remote_port, recvbuf);
  while(true) {
    rv = net_mod_socket_recvandsend_timeout(ser, [&]( void *recvbuf, int recvsize, int key, void ** sendbuf_ptr, int *sendsize_ptr, void * user_data){
    printf( "server: RECEIVED REQUEST FROM  %d : %s\n", key, (char *)recvbuf);
    sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
    net_mod_socket_sendto(ser, sendbuf, strlen(sendbuf) + 1, remote_port);
    // buf 和 size是返回值
    *sendbuf_ptr = sendbuf;
    *sendsize_ptr = strlen(sendbuf) + 1;
    //recvbuf是分配到堆里的,使用完后不要忘记释放掉
    free(recvbuf);
    return;
    }, 0, 2000000, NULL );
  }
  // while ( (rv = net_mod_socket_recvfrom(ser, &recvbuf, &size, &key) ) == 0) {
  //  // printf( "server: RECEIVED REQUEST FROM  %d NAME %s\n", key, recvbuf);
  //   sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
  //   net_mod_socket_sendto(ser, sendbuf, strlen(sendbuf) + 1, key);
  //   free(recvbuf);
  // }
}
// 交互式客户端
@@ -194,7 +203,7 @@
        if (fgets(content, MAXLINE, stdin) != NULL) {
           // 收到消息的节点即使没有对应的信息, 也要回复一个表示无的消息,否则会一直等待
          // n = net_mod_socket_sendandrecv(client, node_arr, node_arr_size, content, strlen(content), &recv_arr, &recv_arr_size);
        n = net_mod_socket_sendandrecv_timeout(client, node_arr, node_arr_size, content, strlen(content), &recv_arr, &recv_arr_size, 1000);
        n = net_mod_socket_sendandrecv_timeout(client, node_arr, node_arr_size, content, strlen(content), &recv_arr, &recv_arr_size, 1);
          printf(" %d nodes reply\n", n);
          for(i=0; i<recv_arr_size; i++) {
             printf("reply from (host:%s, port: %d, key:%d) >> %s\n", 
@@ -372,7 +381,7 @@
  while(true) {
    sprintf(buf, hello_format, pid, l);
    n = net_mod_socket_sendandrecv_timeout(client, node_arr, node_arr_size, buf, strlen(buf)+1,
      &recv_arr, &recv_arr_size, 1);
      &recv_arr, &recv_arr_size, 1000);
    printf(" %d nodes reply\n", n);
    for(j = 0; j < recv_arr_size; j++) {
@@ -493,10 +502,6 @@
  }
  net_mod_socket_close(client);
}
int main(int argc, char *argv[]) {