C中的UDP服务器/客户端实时性能

时间:2014-03-19 10:28:50

标签: c sockets udp

我想测试我写的服务器/客户端架构的性能但是我遇到了非阻塞套接字的问题。当我使用fcntl时,我无法同时运行客户端和服务器。虽然我运行服务器客户端已经发回5000回复,虽然服务器没有开始流。怎么样 当服务器未开启且数据包丢失时,我可以在客户端上有所作为吗?在我的代码客户端 表现相同。 另一方面,当我不使用fcntl时,如果我的客户端没有收到数据包 它阻止并等待该数据包,他甚至没有回复回复。我要那个 客户端发回回复并继续接收数据包。

我不想使用睡眠,因为我需要实时表现。

我想知道真正的应用程序是如何工作的,实现它的诀窍是什么?

THX

服务器

fcntl(socket,F_SETFL,O_NONBLOCK);

while(1){

    sendto clients
    pthread_create(reply_processing)

}

reply_processing(){

    recvfrom_clients

} 

客户端

fcntl(sd,F_SETFL,O_NONBLOCK);


while(1){

    bytes = recvfrom server, buf

    if(nbytes != -1){

        if(buf > = 512) write
        else EOF return 1;



    }else{

        lost++
        nack sent


    }
}

0 个答案:

没有答案