套接字仅在第一次发送和接收失败

时间:2013-10-04 20:08:05

标签: c sockets client-server

所以我让这个程序在服务器和客户端(udp)之间建立一个套接字连接,让客户端发送一个字符串,然后服务器接收该字符串并将其发回并包含“Back”字样。 我工作得很好,问题是它第一次运行时它不起作用。客户端不打印回显的字符串我几乎可以肯定它在我第一次运行时没有收到。

但是,当我结束程序并使用相同的命令再次运行它时,它会工作并在每次运行后继续工作,并按照它的设想回显所有内容。 以下是客户端和服务器发送和接收代码行。

客户方:

len = sendto (s,string,strlen(string),0,(struct sockaddr*)&servAddr, sizeof (servAddr));
// Recieve echo string
recvfrom (s,buffer,sizeof(buffer),0,NULL,NULL);
buffer[len+5] = '\0';
// Print and verify echoed string
fputs(buffer,stdout);

服务器端:

len =    recvfrom (s,buffer, sizeof(buffer), 0, (struct sockaddr*)&clntAddr, &clntAddrLen);

    buffer[len]   =' ';
    buffer[len+1] ='B';
    buffer[len+2] ='a';
    buffer[len+3] ='c';
    buffer[len+4] ='k';
    buffer[len+5] = '\0';
      // Send String
    sendto (s,buffer, strlen(buffer)+1, 0, (struct sockaddr*)&clntAddr, sizeof(clntAddr));

绑定,一切正常。 为什么它只是第一次失败?

感谢您的帮助。

0 个答案:

没有答案