saxlamara Δημοσ. 2 Οκτωβρίου 2014 Δημοσ. 2 Οκτωβρίου 2014 Γειά σας παιδιά έχω αγαναχτήσει..... προσπαθώ να φτιάξω έναν client server με το winsock .. ανόιγω τον client ο οποίος προσπαθεί να κάνει σύνδεση στον server.. πραγματοποιήται η σύνδεση εχω και στον server οταν γινεται μια σύνδεση να βγάζει ενα μυνημα connected.. το θέμα μου είναι οτι οταν κλείσω τον σέρβερ ο client δεν ξανασυνδέεται, μονο αμα τον κλείσω και τον ξανανοίξω η αμα πάω και ανοιξω δευτερη φορα το client.exe .. εγω θέλω όμως όταν κλείνει ο server ο client να προσπαθει να ξανασυνδεθεί αν χαθεί η σύνδεση.. ο κώδικας τοu client ειναι αυτος " #include <iostream> #include <winsock.h> #include <winsock2.h> using namespace std; int main() { long SUCCESSFUL; WSAData WinSockData; WORD DLLVERSION; DLLVERSION = MAKEWORD(2,1); SUCCESSFUL = WSAStartup(DLLVERSION,&WinSockData); SOCKADDR_IN ADDRESS; int AddressSize = sizeof(ADDRESS); SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, NULL); ADDRESS.sin_addr.s_addr = inet_addr("192.168.2.3"); ADDRESS.sin_family = AF_INET; ADDRESS.sin_port = htons(1010); while(1) { SUCCESSFUL = connect(sock,(SOCKADDR*)&ADDRESS, sizeof(ADDRESS)); } } " Εχω όπως βλέπεται το while αλλα δεν το επαναλαμβανει αν συνδεθεί μια φορά καπου κολαει η δεν ξέρω και εγώ τι μπορει κάποιος να βοηθήσει;
παπι Δημοσ. 2 Οκτωβρίου 2014 Δημοσ. 2 Οκτωβρίου 2014 Εαν φας dc, τοτε φτιαχνεις νεα socket και ξανακανεις connect.
saxlamara Δημοσ. 3 Οκτωβρίου 2014 Μέλος Δημοσ. 3 Οκτωβρίου 2014 Εαν φας dc, τοτε φτιαχνεις νεα socket και ξανακανεις connect. ναι αυτο είναι το θέμα οτι δεν ξέρω πως να ελένξω αν στον server που εγινε η συνδεση ειναι ακομα alive ωστε να πω μετα αν αποσυνδεθηκε shutdown closesocket wsacleanup και να ξανακαλεσω main για να φτιαξει νεο socket
Moderators Kercyn Δημοσ. 3 Οκτωβρίου 2014 Moderators Δημοσ. 3 Οκτωβρίου 2014 Για δες αυτά τα 2 μήπως βγάλεις άκρη. http://stackoverflow.com/questions/851654/how-can-i-check-is-a-socket-is-still-open http://stackoverflow.com/questions/12402549/check-if-socket-is-connected
timonkaipumpa3 Δημοσ. 3 Οκτωβρίου 2014 Δημοσ. 3 Οκτωβρίου 2014 Είναι block call στην connect; (Πάει καιρός που έγραφα για winsocks) Σε κάθε περίπτωση δες εδώ: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx Είναι καλή αρχή.
TSMGeorge Δημοσ. 5 Οκτωβρίου 2014 Δημοσ. 5 Οκτωβρίου 2014 Τι είναι αυτό; (δηλαδή κάθε ms κάνεις Connect;;; μια φορά κάνουμε Connect και μετά έχουμε τον βρόχο για να μην τερματίσει το πρόγραμμα(με την σειρά του και το Socket). while(1) { SUCCESSFUL = connect(sock,(SOCKADDR*)&ADDRESS, sizeof(ADDRESS)); } Απ' όσο ξέρω από άλλες γλώσσες, κάνεις Connect και ύστερα μπαίνεις σε βρόχο. Παράδειγμα σε C# Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect("host", 80); while (socket.Connected) { // Whatever }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα