1

所以我制作了这个程序来在服务器和客户端(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));

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

感谢你的帮助。

4

0 回答 0