telnet 服务端发送什么样的socket数据包让客户端断开连接?
如果只是
close(connext_socket)
客户端telnet程序并不会退出。
有的telnet服务端在登录的过程中,密码输错了会自动退出telnet显示
Connection closed by foreign host.
我稍微看了一下telnet协议,好像是返回已字节IAC(0xFF)开始的数据包
char over[10] = "";
sprintf(over, "%c%c", 255,244);// IP 244 终止进程
send(connect_d, over, strlen(over), 0);
close(connect_d);
然而客户端并没有退出。
中出英梨梨
9 years, 8 months ago
Answers
和 telnet 没什么关系。
调用
shutdown()
关闭socket连接即可。
之所以客户端不断开连接,使用我写的是多进程的TCP服务,子进程和父进程其实是共享某些资源的,在子进程中用
close
关闭socket只是将socket的引用计数减一,而不会真正的去关闭。要想关闭去使用
shutdown()
.
TCP FIN not sent on doing 'close ()' for a multi-threaded TCP client
Call shutdown(WR) will send FIN,but close have little different:if fd reference count not equal 0 will not send FIN.
糟糕2次元牛奶
answered 9 years, 8 months ago