Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 05:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Frage zu TCP /c++

Discussion on Frage zu TCP /c++ within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Terrat's Avatar
 
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
Question Frage zu TCP /c++

Hallo liebe Epvp Community,

ich befasse mich seit neusten mit TCP Techniken. Alles schön und gut klappt auch alles solange es nur 1 Client gibt. Nun möchte ich multiclients einführen sprich immer wen die while durchläuft die Clients die schon connected sind etwas zuschicken mit "send();". Das würde auch klappen/klappt auch schon doch das Problem ist das ich mit "accept();" die Clients rein lasse beim Server, accept(); wartet aber auf den Client das heißt die While schleife bleibt an diesen Punkt stehen bis ein neuer Client connected ist. Gibt es eine andere Möglichkeit(en) Clients (reinzulassen) ohne accept(); zu nutzen oder wen dieses Unterbrechen zu verhindern. Wer das noch wissen will ,in der While schleife sind keine sleeps.
Terrat is offline  
Old 11/30/2013, 15:20   #2
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Du könntest für jeden Client einen eigenen Thread machen.
Logtetsch is offline  
Thanks
1 User
Old 11/30/2013, 15:32   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by Logtetsch View Post
Du könntest für jeden Client einen eigenen Thread machen.
Sollte er aber nicht.
Sieh dir mal select an.
MrSm!th is offline  
Thanks
2 Users
Old 11/30/2013, 16:27   #4
 
Terrat's Avatar
 
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
Question

Danke mr.smith du meinst bestimmt das hier wen ich mich nicht irre?


doch irgendwie kriege ich das nicht verbindet könntest du mir ein Beispiel dafür machen ?

Hier mal meine jetzige While schleife:
Code:
While(true)
{
			memset(&sendbuf, 0, sizeof(sendbuf));
			Client = accept(slisten,(struct sockaddr*)&Clientinfo,&Clientinfolen);
		    if(Client != SOCKET_ERROR)
				cout << "Client accepted: " << inet_ntoa(Clientinfo.sin_addr) <<" On Port: "
				     << ntohs(Clientinfo.sin_port) << endl;
			res = send(Client, "Welcome in Newtwork",strlen("Succesfull connected to Server!"),0);
			if( res != SOCKET_ERROR )
				cout << "Message Succesfull sendet to Client: " << inet_ntoa(Clientinfo.sin_addr) <<" On Port: "
				     << ntohs(Clientinfo.sin_port) << endl;
			else 
				cout << "Failed to send Message Reason:" << WSAGetLastError <<endl;
			cin.getline(sendbuf,256);
			res = send(Client, sendbuf ,strlen("Succesfull connected to Server!"),0);
			if( res != SOCKET_ERROR )
				cout << "Message Succesfull sendet to Client: " << inet_ntoa(Clientinfo.sin_addr) <<" On Port: "
				     << ntohs(Clientinfo.sin_port) << endl;
			else 
				cout << "Failed to send Message Reason:" << WSAGetLastError <<endl;
			for(int i=0; i < MAX_CLIENTS; i++)
			{
				if( CLIENT_HANDLE[i] != 0 )
				{
					cout << "Clienthandle "<< i << ": " <<CLIENT_HANDLE[i] << endl;
				}
			}
}
Terrat is offline  
Old 11/30/2013, 17:40   #5


 
K1ramoX's Avatar
 
elite*gold: 26
Join Date: Jan 2012
Posts: 3,474
Received Thanks: 18,847
mach accept in einer schleife und speicher die sockets in einem vector ab. dann einen neuen thread erstellen, dort durch den vector durchiterieren und da dann die jeweilige nachricht absenden (sofern du eine nachricht für alle clienten haben willst, ansonsten nimm std:air).

was ich dir aber mehr empfehlen würde, wär boost::asio. wird schön erklärt
K1ramoX is offline  
Old 11/30/2013, 21:12   #6



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,030
Received Thanks: 981
Quote:
Originally Posted by Dreamsläps View Post
TCP Techniken ... send(); ... accept();
Bitte lies dir die beiden Artikel durch:
Transmission Control Protocol (TCP)
Winsock API

Quote:
Originally Posted by K1ramoX View Post
was ich dir aber mehr empfehlen würde, wär boost::asio. wird hier schön erklärt
boost.asio kann ziemlich komplex werden. Wenn man da noch nicht mal mit dem Standard Interface umgehen kann sehe ich da schwarz. Aber an sich ist boost.asio eine nette Sache.

Quote:
Originally Posted by K1ramoX View Post
std:air
[noparse]std::pair[/noparse]
+Yazzn is offline  
Reply


Similar Threads Similar Threads
Frage zu Bot machen-Maus Frage-Button Frage
02/16/2012 - AutoIt - 10 Replies
Hallo, Elitepvpers hat echt für alles ein Ort :D Geil. Also...Bin AutoIt anfänger. Ich bin dabei ein Bot für das Online Game Runescape zu machen. Ich hette 2 Fragen(FÜR DEN MOMMENT :) ): Kann ich machen das AutoIt inaktiv die Maus benutzt,also werend der Bot läuft das ich bzw. man im Internet surft oder was anderes macht`?



All times are GMT +2. The time now is 05:54.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.