redisAsyncContext *redisAsyncConnectBind(const char *ip, int port, const char *source_addr) { SOCKADDR_STORAGE ss; redisContext *c = redisPreConnectNonBlock(ip, port, &ss); redisAsyncContext *ac = redisAsyncInitialize(c); if (aeWinSocketConnectBind(ac->c.fd, &ss, source_addr) != 0) { ac->c.err = errno; strerror_r(errno, ac->c.errstr, sizeof(ac->c.errstr)); } __redisAsyncCopyError(ac); return ac; }
redisAsyncContext *redisAsyncConnect(const char *ip, int port) { struct sockaddr_in sa; redisContext *c = redisPreConnectNonBlock(ip, port, &sa); redisAsyncContext *ac = redisAsyncInitialize(c); if (aeWinSocketConnect(c->fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) { c->err = errno; strerror_r(errno,c->errstr,sizeof(c->errstr)); } __redisAsyncCopyError(ac); return ac; }