TCP_transfer/client_poll.cpp
2024-09-12 18:32:49 +08:00

43 lines
1.2 KiB
C++

// I/O复用版本的异步通讯的客户端程序。
#include "_el.h"
using namespace eviwbh;
int main(int argc,char *argv[])
{
if (argc!=3) { cout << "Using: ./client_poll ip port\n"; return -1;}
ctcpclient tcpclient;
if (tcpclient.connect(argv[1],atoi(argv[2]))==false)
{
printf("tcpclient.connect failed.\n"); return -1;
}
clogfile logfile;
logfile.open("/tmp/demo10.log");
string strsendbuffer,strrecvbuffer;
int ack=0; // 已接收回应报文的计数器。
for (int ii=1;ii<=1000000;ii++)
{
sformat(strsendbuffer,"这是第%d个。",ii);
logfile.write("%s\n",strsendbuffer.c_str());
tcpclient.write(strsendbuffer); // 向服务端发送报文。
while (tcpclient.read(strrecvbuffer,-1)==true) // 检查tcp的缓冲区中是否有服务端回应报文。
{
logfile.write("%s\n",strrecvbuffer.c_str());
ack++;
}
}
while (ack<1000000)
{
if (tcpclient.read(strrecvbuffer)==true) // 等待服务端回应报文。
{
logfile.write("%s\n",strrecvbuffer.c_str());
ack++;
}
}
}