wangzhengquan
2020-12-07 d7d05fb334db91e3ecbf009ca2650d88f9ed7b46
update doc
2个文件已修改
92 ■■■■■ 已修改文件
doc/使用指南.mk 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test_net_socket/test_net_mod_socket.c 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ʹÓÃÖ¸ÄÏ.mk
@@ -25,19 +25,21 @@
```
### 2.2 å¯åЍBusService
BusService, Pub/Sub Client å’Œ Request/Reply Client的头文件都是 net_mod_socket_wrapper.h, ä¸‹é¢å¯åЍkey是8的Bus服务.
BusService的头文件是bus_server_socket_wrapper.h, ä¸‹é¢æ˜¯å¯åЍBus服务的代码.
```
void * server_socket = net_mod_socket_open();
net_mod_socket_bind(server_socket, 8);
net_mod_socket_start_bus(server_socket);
void * server_socket = bus_server_socket_wrapper_open();
if(bus_server_socket_wrapper_start_bus(server_socket) != 0) {
    printf("start bus failed\n");
    exit(1);
}
```
###  2.3 Request/Reply ç”¨ä¾‹è¯´æ˜Ž
Pub/Sub Client å’Œ Request/Reply Client的头文件都是 net_mod_socket_wrapper.h
现在模拟一个场景,A向B和C发送一个请求,B和C收到请求后分别返回一个响应给A ã€‚假设A的IP是192.168.20.101,B的IP是192.168.20.102, C的IP是192.168.20.103, å®ƒä»¬çš„key都是100, ä»£ç†server的端口是5000。
A çš„代码如下:
@@ -54,7 +56,9 @@
int node_arr_size = 2;
void *client = net_mod_socket_open();
n = net_mod_socket_sendandrecv(client, node_arr, node_arr_size, content, strlen(content), &recv_arr, &recv_arr_size);
n = net_mod_socket_sendandrecv(client, node_arr, node_arr_size,
    content, strlen(content), &recv_arr, &recv_arr_size);
printf(">>> %d nodes reply\n", n);
for(i=0; i<recv_arr_size; i++) {
    printf("host:%s, port: %d, key:%d, content: %s\n", 
@@ -91,37 +95,62 @@
### 2.3 Pub/Sub ç”¨ä¾‹è¯´æ˜Ž
现在模拟一个场景,B å’Œ C订阅了主题news, A å‘布了该主题相关的内容 ã€‚假设A的IP是192.168.20.101,B的IP是192.168.20.102, C的IP是192.168.20.103, å®ƒä»¬çš„key都是200, Bus的key是8, ä»£ç†server的端口是5000.
现在模拟一个场景,B å’Œ C订阅了主题news, A å‘布了该主题相关的内容 ã€‚假设A的IP是192.168.20.101,B的IP是192.168.20.102, C的IP是192.168.20.103, å®ƒä»¬çš„key都是200,  ä»£ç†server的端口是5000.
A的代码如下:
```
int n;
const char* topic = "news":
const char* content = "HELLO WORLD!":
void *client = net_mod_socket_open();
net_mod_socket_bind(client, 200);
net_node_t node_arr = {
    {"192.168.20.102", 5000, 8},
    {"192.168.20.103", 5000, 8}
};
int node_arr_size = 2;
int main() {
    int n;
    const char* topic = "news":
    const char* content = "HELLO WORLD!":
    void *client = net_mod_socket_open();
    net_mod_socket_bind(client, 200);
    net_node_t node_arr = {
        {"192.168.20.102", 5000},
        {"192.168.20.103", 5000}
    };
    int node_arr_size = 2;
void *client = net_mod_socket_open();
net_mod_socket_bind(client, 200);
n = net_mod_socket_pub(client, pub_node_arr, pub_node_arr_size, topic, strlen(topic)+1, content, strlen(content)+1);
printf("pub %d nodes\n", n);
    void *client = net_mod_socket_open();
    net_mod_socket_bind(client, 200);
    n = net_mod_socket_pub(client, pub_node_arr,
        pub_node_arr_size, topic, strlen(topic)+1, content, strlen(content)+1);
    printf("pub %d nodes\n", n);
}
```
B å’Œ C çš„代码如下
```
const char* topic = "news":
void *client = net_mod_socket_open();
net_mod_socket_bind(client, 200);
while (net_mod_socket_sub(client, topic, strlen(topic),  8) == 0) {
 printf("%d Sub success!\n", net_mod_socket_get_key(client));
// æ‰“印接受到的订阅消息
void *print_sub_msg(void *sockt) {
  pthread_detach(pthread_self());
  void *recvbuf;
  int size;
  int key;
  while (net_mod_socket_recvfrom( sockt, &recvbuf, &size, &key) == 0) {
    printf("收到订阅消息:%s\n", recvbuf);
    free(recvbuf);
  }
}
int main() {
    pthread_t tid;
    // åˆ›å»ºä¸€ä¸ªçº¿ç¨‹æŽ¥å—订阅消息
    pthread_create(&tid, NULL, print_sub_msg, client);
    const char* topic = "news":
    void *client = net_mod_socket_open();
    net_mod_socket_bind(client, 200);
    // è®¢é˜…感兴趣的主题
    if (net_mod_socket_sub(client, topic, strlen(topic)) == 0) {
     printf("%d Sub success!\n", net_mod_socket_get_key(client));
    }
}
```
更具体的实例代码请参看`test_net_mod_socket.c`
test_net_socket/test_net_mod_socket.c
@@ -41,7 +41,7 @@
    }
}
// æ‰“印接受到的订阅消息
void *print_sub_msg(void *sockt) {
  pthread_detach(pthread_self());
  void *recvbuf;
@@ -83,7 +83,7 @@
  }
}
// äº¤äº’式客户端
void start_net_client(char *sendlist, char*publist ){
    client = net_mod_socket_open();
    char content[MAXLINE];
@@ -95,6 +95,7 @@
    net_mod_recv_msg_t *recv_arr;
  pthread_t tid;
  // åˆ›å»ºä¸€ä¸ªçº¿ç¨‹æŽ¥å—订阅消息
  pthread_create(&tid, NULL, print_sub_msg, client);
     
  //192.168.5.10:5000:11, 192.168.5.22:5000:11, 192.168.5.104:5000:11