Warum habe ich "Invalid argument" beim Versuch, verbindungen zu akzeptieren?
In der nächsten code, während ich versuche, die Verbindung eines Clients der server zeigt folgenden Fehler:
"ungültiges argument", ich kann keine Fehler sehen.
if((l_sock=socket(AF_INET,SOCK_STREAM,0))!=-1)
{
struct sockaddr_in srv_dir;
srv_dir.sin_family=AF_INET;
srv_dir.sin_port=8500;
srv_dir.sin_addr.s_addr=INADDR_ANY;
if((bind(l_sock,(struct sockaddr *)&srv_dir,sizeof(struct sockaddr_in)))!=-1)
{
if(!(listen(l_sock,5)))
{
signal(SIGINT,cerraje);
int t_sock;
struct sockaddr_in cli_dir;
socklen_t tam;
time_t tstmp;
struct tm * res;
res=(struct tm *)malloc(sizeof(struct tm));
while(!key)
{
if((t_sock=accept(l_sock,(struct sockaddr *)&cli_dir,&tam))!=-1)
{
tstmp=time(&tstmp);
res=gmtime(&tstmp);
send(t_sock,res,sizeof(struct tm),0);
wr_hora(*res,cli_dir.sin_addr);
}
else
perror("Petición no atendida");//The error is printed here.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie die Dokumentation zu die
accept(2)
:So müssen Sie den Wert initialisieren von
tam
ging inaccept
mitsizeof(cli_dir)
. Du hast Glück gehabt, dass die socket-Bibliothek war in der Lage, zu fangen, Ihre Fehler, weil Sie vorbei sind, in nicht-initialisierten Speicher, die Ergebnisse zu undefiniertem Verhalten.