我收到一個無效的參數錯誤,當我打電話無效的參數錯誤而調用connect爲IPv6套接字
connect(m_socket, (struct sockaddr *)&m_socket_addrv6, sizeof(struct sockaddr));
m_socket_addrv6是結構sockaddr_in6的。 從gdb開始,這就是m_socket_addrv6的樣子。
>{sin6_len = 0 '\0', sin6_family = 28 '\034', sin6_port = 20480, sin6_flowinfo = 0, sin6_addr = {__u6_addr = {
__u6_addr8 = "�\200\000\000\000\000\000\000\002PV���\000n", __u6_addr16 = {33022, 0, 0, 0, 20482, 65366, 48126, 28160},
__u6_addr32 = {33022, 0, 4283846658, 1845541886}}}, sin6_scope_id = 0}.
相似的代碼正在爲IPv4工作。有沒有什麼我缺少的V6?
請嘗試'sizeof(m_socket_addrv6)'而不是。你告訴'connect'你傳遞的結構比實際小。 –
@PaulRooney謝謝!那擺脫了錯誤。 – aupreti
連接是否工作? 'sin6_scope_id'是0,儘管地址似乎是鏈接本地地址! –