2016-04-05 14 views
0

Ben her yeni müşteri her n saniyede bir mesaj gönderirMesaj (Winsock) (C++)

while ((client_socket = accept(server_socket, (sockaddr*)&client_info, &client_addr_size))) 
{ 
    nclients++; 
    HOSTENT *hst; 
    hst = gethostbyaddr((char*)&client_info.sin_addr.S_un.S_addr, 4, AF_INET); 
    printf("+%s [%s] new connect!\n", (hst) ? hst->h_name : "", inet_ntoa(client_info.sin_addr)); 
    PRINTUSERS; 
    DWORD thID; 
    CreateThread(NULL, NULL, SexToClient, &client_socket, NULL, &thID); 
} 

Akım fonksiyonu. için ayrı bir iş parçacığı (Tüm akışlar yapmayın yaratan bir sunucu, Aynı anda tüm istemcilere bir mesaj göndermek için nasıl? (yayın)

+0

'Sunucu' sınıfında aktif kullanıcı listeniz var mı? Eğer öyleyse, sadece bu listeyi (ya da haritalarınızı veya ihtiyaçlarınızı en iyi karşılayan her şeyi), her ikisine de gönderebilirsiniz. – ArchbishopOfBanterbury

+0

Ama her müşteri farklı bir sokete bağlı mı, yoksa yanlış mıyım? –

cevap

0

Göremiyorum Streamfunction. Karşılık gelen işlev olmadan mükemmel bir cevap veremiyorum. Normalde tüm istemcilere bir for döngüsünde (eşzamansız) gönderirsiniz. Sistem, gençleri her bir Müşteriye Biri Sonra Masajı gönderirdi. Gerçekten bir Masajı birden fazla istemciye göndermek istiyorsanız Aynı anda çok noktaya yayın kullanmanız gerekir. (= Birden fazla istemciye ulaşan bir paket gönderiyor.) TCP kullanılmadığı için bu mümkün değil, çünkü TCP, bir ana bilgisayar ile bir istemci arasındaki bir (güvenli) noktadan noktaya bağlantı kurar. UDP kullanmanız gerekecek. Paketlerin doğru Siparişe ulaşması, doğru olması ya da varması halinde UDP'nin umurunda olmayacağını unutmayın.