Server empfängt und sendet nichts..
-
+ SNIFFER
-
if(sock=accept(sock,(sockaddr*)&remote_host,&sin_size)==-1){ cout<<"can't accept!"<<endl; exit(EXIT_FAILURE); }meinst du das ich sock neu initialisieren muss?
klappt immer noch nicht..
-
accept gibt einen NEUEN socket zurueck. dein erster socket ist immernoch der serversocket aber der zurueckgegebene ist die akzeptierte verbindung.
-
c.rackwitz schrieb:
accept gibt einen NEUEN socket zurueck. dein erster socket ist immernoch der serversocket aber der zurueckgegebene ist die akzeptierte verbindung.
stimmt.
mit accept nimmst du die "anfragen" entgegen.
jedes accept gibt eine socket zurueck, "an" welcher ein client
auf weiteres von dir wartet.kannst es wie ein telefon vorstellen.
wenn du abnimmst hast du jemanden anderes, als dich, an der strippe.
ist auch hier nicht anders.gg
-
c.rackwitz schrieb:
accept gibt einen NEUEN socket zurueck. dein erster socket ist immernoch der serversocket aber der zurueckgegebene ist die akzeptierte verbindung.
habe ich schon verstanden, aber dann ist das doch trotzdem richtig:
if(sock=accept(sock,(sockaddr*)&remote_host,&sin_size)==-1){ cout<<"can't accept!"<<endl; exit(EXIT_FAILURE); }
wenn ja dann verstehe ich immer noch nicht wieso es nicht funktioniert.
-
socket ?? schrieb:
habe ich schon verstanden, aber dann ist das doch trotzdem richtig:
if(sock=accept(sock,(sockaddr*)&remote_host,&sin_size)==-1){ cout<<"can't accept!"<<endl; exit(EXIT_FAILURE); }
wenn ja dann verstehe ich immer noch nicht wieso es nicht funktioniert.
Nein hast du nicht!
if(NEWSOCK=accept(sock,(sockaddr*)&remote_host,&sin_size)==-1){ cout<<"can't accept!"<<endl; exit(EXIT_FAILURE); }wobei ich nur die BSD sockets kenne

sollte aber "fast" gleich sein. einfach einfacher zum anwenden.gg
-
ok, klar..
man könnte ja aber trotzdem den alten überschreiben oder nicht?.. naja egal, so geht es trotzdem nicht:
#include<winsock.h> #include<io.h> #include<iostream.h> int main() { int sock; struct sockaddr_in my_addr; char send[10]; char recive[10]; WSADATA wsaData; if (WSAStartup (MAKEWORD(1, 1), &wsaData) != 0){ cout<<"Winsock error!"<<endl; exit (EXIT_FAILURE); } else cout<<"Winsock initialized!"<<endl; sock = socket (AF_INET, SOCK_STREAM, 0); if(sock == -1) { cout<<"Socket error"<<endl; exit (EXIT_FAILURE); } else cout<<"socket initialized!"<<endl; my_addr.sin_family = AF_INET; my_addr.sin_port = htons(5000); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); int sin_size = sizeof(struct sockaddr_in); sockaddr_in remote_host; if(bind(sock,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1){ cout<<"bind error!"<<endl; } else cout<<"bind, ok!"<<endl; if(listen(sock,1) == -1){ cout<<"can't listen.."<<endl; exit(EXIT_FAILURE); } else cout<<"listening.."<<endl; int nsock; if(nsock=accept(sock,(sockaddr*)&remote_host,&sin_size)==-1){ cout<<"can't accept!"<<endl; exit(EXIT_FAILURE); } else cout<<"accept connection:"<<endl; if(recv(nsock,recive,sizeof(recive),0)==-1) { cout<<"can't recive"<<endl; exit(EXIT_FAILURE); } cout<<recive<<endl; if(send(nsock,send,sizeof(send),0)==-1) { cout<<"can't sending"<<endl; exit(EXIT_FAILURE); } closesocket(sock); WSACleanup(); return 0; }
-
schon gut.. ersparrt euch die antworten..
habe den fehler verstanden..
danke an alle

-
wo ist der fehler? wir wollen dir mit spott und hohn eine praegende erinnerung schenken *g*
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.