connect: get udp bind port

This commit is contained in:
fengzero
2025-10-13 07:12:44 +00:00
parent f564fbf4b2
commit fe48ac8178
2 changed files with 16 additions and 1 deletions
+2 -1
View File
@@ -303,6 +303,7 @@ int neu_conn_tcp_server_wait_msg(neu_conn_t *conn, int fd, void *context,
int is_ipv4(const char *ip);
int is_ipv6(const char *ip);
bool neu_conn_is_connected(neu_conn_t *conn);
bool neu_conn_is_connected(neu_conn_t *conn);
uint16_t neu_conn_udp_act_port(neu_conn_t *conn);
#endif
+14
View File
@@ -69,6 +69,8 @@ struct neu_conn {
uint8_t *buf;
uint16_t buf_size;
uint16_t offset;
uint16_t udp_act_port;
};
static void conn_tcp_server_add_client(neu_conn_t *conn, int fd,
@@ -951,6 +953,13 @@ static void conn_connect(neu_conn_t *conn)
return;
}
struct sockaddr_in local_addr = { 0 };
socklen_t local_addr_len = sizeof(local_addr);
if (getsockname(fd, (struct sockaddr *) &local_addr, &local_addr_len) ==
0) {
conn->udp_act_port = ntohs(local_addr.sin_port);
}
if (is_ipv4(conn->param.params.udp.dst_ip)) {
struct sockaddr_in remote = {
.sin_family = AF_INET,
@@ -1465,4 +1474,9 @@ int is_ipv6(const char *ip)
bool neu_conn_is_connected(neu_conn_t *conn)
{
return conn->is_connected;
}
uint16_t neu_conn_udp_act_port(neu_conn_t *conn)
{
return conn->udp_act_port;
}