示例#1
0
文件: lsocket.c 项目: nan1888/lask
int socket_getsockname(int fd, char *addr, int *port) 
{
	sockaddr_x sa;
	socklen_t len = (socklen_t)sizeof(sa);
	if (getsockname(fd, (SA*)&sa, &len) == 0) {
		sa_parse(&sa, addr, port);
		return 0;
	} else {
		return errno;
	}
}
示例#2
0
文件: lsocket.c 项目: nan1888/lask
int socket_accept(int fd, int *peer, char *addr, int *port) 
{
	sockaddr_x sa;
	socklen_t len = (socklen_t)sizeof(sa);
	*peer = accept(fd, (SA*)&sa, &len);
	if (*peer >= 0) {
		if (addr != NULL || port != NULL) 
			sa_parse(&sa, addr, port);
		return 0;
	} else {
		return errno;
	}
}
示例#3
0
文件: lsocket.c 项目: nan1888/lask
int socket_recvfrom(int fd, uint8 *data, size_t count, int flags, char *addr, int *port, size_t *got) 
{
    int nrecv;
    sockaddr_x sa;
    socklen_t len = (socklen_t)sizeof(sa);
	
    *got = 0;
    nrecv = recvfrom(fd, data, count, flags, (SA*)&sa, &len);
    if (nrecv >= 0) {
    	*got = nrecv;
    	sa_parse(&sa, addr, port);
    	return 0;
    } else {
    	return errno;
    }
}
示例#4
0
static void
sa_parse_test(
    const char* const inetId,
    const unsigned short port)
{
    ServiceAddr* sa;
    char*        buf = ldm_format(80, strchr(inetId, ':') ? "[%s]:%d" : "%s:%d",
                                  inetId, port);
    int          status;

    CU_ASSERT_PTR_NOT_NULL_FATAL(buf);
    status = sa_parse(&sa, buf);
    log_flush_error();
    CU_ASSERT_EQUAL_FATAL(status, 0);
    CU_ASSERT_STRING_EQUAL(sa_getInetId(sa), inetId);
    CU_ASSERT_EQUAL(sa_getPort(sa), port);
    sa_free(sa);
}