这本是libmodbus-3.0.6中的一个例子,觉得是学习select很好的例子,注释了一下分享出来!
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <modbus.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define NB_CONNECTION 5
modbus_t *ctx = NULL;
int server_socket;
modbus_mapping_t *mb_mapping;
static void close_sigint(int dummy)
{
close(server_socket);
modbus_free(ctx);
modbus_mapping_free(mb_mapping);
exit(dummy);
}
int main(void)
{
int master_socket;
int rc;
fd_set refset; //fd_set现在一共可以监听1024个文件描述符
fd_set rdset;
/*文件描述符的最大值,要保证fdmax是需要监视的最大的文件描述符值*/
int fdmax;
ctx = modbus_new_tcp("127.0.0.1", 1502);
mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0,
MODBUS_MAX_READ_REGISTERS, 0)