c-TCP客户端服务器性能影响



是否有可能根据服务器规则改进此功能以加快执行速度(甚至微秒(?

在这种情况下,非阻塞如何帮助我?执行次数少于其他可能的连接尝试次数。在这种情况下,非阻塞有帮助吗?我如何确保连接之间的等待时间?

该点是从创建套接字到接收到读取的最快时间。以及每秒尽可能多的连接。

服务器规则/限制:

  • 每12毫秒连接一次。如果您违反此规则并尝试提前连接,IP将被阻止1200毫秒
  • 每次接收到读取时,连接都会关闭
int main()
{
struct timespec start, end;
clock_gettime(CLOCK_MONOTONIC, &start);
while(1)
{
clock_gettime(CLOCK_MONOTONIC, &end);
int elapsed_us = diff_us(end, start);
// wait until 12ms
if (elapsed_us < 12000)
{
usleep(12000-elapsed_us);
}
// check
clock_gettime(CLOCK_MONOTONIC, &start);
if (allowed(request)==1)
{
dojob();
return(0);
}
}
return 0;
}
int allowed(char request[])
{
char server_message[4096];
memset(server_message,'',sizeof(server_message)); 
int socket_desc = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = inet_addr(server);
connect(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr));
write(socket_desc, request, strlen(request));
read(socket_desc, server_message, sizeof(server_message));

close(socket_desc);
char * ret = strstr(server_message, "OK");
if (ret)
return 1; // granted, do the job
else
{
uwait(10000);
return 0; // come back later, repeat asking for the allowance to do the job
}
}

我看到两件事正在扼杀程序的性能。

  1. 每次迭代的memset,您不需要,read会给您读取的字节数
  2. 套接字和连接的创建

从我的角度来看,你应该专注于这一点,但我不清楚你的计划的意图是什么,一些家庭作业可能是什么?也缺少do_job做的功能

相关内容

  • 没有找到相关文章

最新更新