how reset accept
ed socket in application level either io::socket::inet in perl or in c?
there programm bind
ing, listen
ing on tcp port, , accept
s client connection, after read
s , write
s data. if close
or shutdown
socket, tcp layer gracefully terminates (with fin packet), rather than, i'd generate rst packet.
you didn't specify exact os using. found linux have api call reset tcp connection, have no idea how portable is. way use connect
system call on connected socket time family af_unspec
.
after have reset socket way possible connect socket again connect
call.
int main(int argc, char** argv) { int fd = socket(af_inet6, sock_stream, 0); while (1) { struct sockaddr_in6 sockaddr = { .sin6_family = af_inet6, .sin6_port = htons(80), .sin6_flowinfo = 0, .sin6_scope_id = 0, }; struct timespec s = { .tv_sec = 2, .tv_nsec = 0, }; /* connect port 80 on localhost */ inet_pton(af_inet6, "::1", &sockaddr.sin6_addr.s6_addr); connect(fd, (struct sockaddr*)&sockaddr,sizeof(sockaddr)); nanosleep(&s, null); /* reset connected socket */ sockaddr.sin6_family = af_unspec; connect(fd, (struct sockaddr*)&sockaddr,sizeof(sockaddr)); nanosleep(&s, null); } }
Comments
Post a Comment