目录
1.应用场景
服务器和客户端启动以后(./tcp_srv.cpp ./tcp_cli.cpp 192.168.164.128 20000),服务器端关闭,此时客户端向服务器端发送数据,需要防止程序崩溃。
2.代码
客户端代码:
#include "tcp_socket.hpp"
#include<signal.h>
//tcp连接管理中的保活机制
void sigcb(int signo)
{
printf("recv signo:%d\n",signo);
}
int main(int argc,char* argv[])
{
if(argc!= 3)
{
std::cout<<"please input server address!\n";
std::cout<<"USsage:./tcp_cli 192.168.164.128 20000\n";
return -1;
}
signal(SIGPIPE,sigcb);
std::string srv_ip = argv[1];
uint16_t srv_port = std::stoi(argv[2]);
TcpSocket cli_sock;
//创建套接字
CHECK_RES(cli_sock.Socket());
//绑定地址信息(客户端不推荐)
//向服务器发起连接
CHECK_RES(cli_sock.Connect(srv_ip,srv_port));
while(1)
{
//与服务器通信
std::string buf;
std::cout<<"client say:";
fflush(stdout);
std::cin>>buf;
bool ret = cli_sock.Send(buf);
if(ret == false)
{
cli_sock.Close();
return -1;
}
/*
buf.clear();
ret = cli_sock.Recv(&buf);
if(ret == false)
{
cli_sock.Close();
return -1;
}
std::cout<<"server say:"<<buf<<std::endl;
*/
}
//关闭套接字
cli_sock.Close();
return 0;
}
文件结构如图所示:除了tcp_cli.cpp,其他代码见博客:http://(70条消息) TCP 用setsockopt()设置等待时间,减少主动关闭方所处TIME_WAIT的时间_WJ8871的博客-CSDN博客 https://blog.csdn.net/weixin_46153828/article/details/126531466