对于client端
一开始client端是知道server端的ip
sock_fd = socket(AF_INET, SOCK_STREAM, 0)
ret = bind(sock_fd, (struct sockaddr *)&local_addr, addr_len)
connect(sock_fd, (struct sockaddr *)&remote_addr, addr_len)
所以client端send,recv一直用此socket。
而server端:
sock_fd = socket(AF_INET, SOCK_STREAM, 0)
ret = bind(sock_fd, (struct sockaddr *)&local_addr, addr_len)
new_sock = accept(sock_fd, (struct sockaddr *)&remote_addr, &addr_len)
accept()返回值new_sock才包含对端ip地址和端口信息,所以之后的通信都用new_sock,而不是sock_fd。