我正在用 C 语言制作一个 FTP 服务器。在客户端,我使用的是 FileZilla。到目前为止,我的代码仅包含握手部分。
我遇到的问题是我为终端打印的字符串被发送到 FileZilla。我的问题是如何将这两者分开,我尝试了几件事,但没有一个给出正确的结果。
这只是我的代码的一部分,但对我来说这是有用的部分:
while (FOREVER){
addr_size = sizeof their_addr;
newfd = accept(listener, (struct sockaddr*) &their_addr, &addr_size);
if (newfd == -1){
perror("accept");
continue;
}
if ((send(newfd, "220 JEDI FTP is ready", 50, 0)) <= 0)
perror("error sending");
puts("connection established");
puts("waiting for user & connection");
while (!login){
// username
if (!user){
if ((recv(newfd, buffer, BUFFCON, 0)) <= 0){
puts("error receiving username");
}
else{
if (strstr(buffer, "USER") != NULL){
if (strstr(buffer, name) != NULL){
send(newfd, "331 password required", 50, 0);
puts("username correct");
user = 1;
}
else{
puts("username incorrect");
send(newfd, "430 username incorrect", 50, 0);
}//else
}//if
}//else
}//if user
这是 FileZilla 中的输出:
- 状态: Adres bepalen van localhost
- 状态:Verbinden 遇到 [::1]:21...
- 状态:Verbinding aangemaakt, welkomstbericht afwachten...
- Antwoord:220 JEDI FTP 已准备就绪
- 突击队:用户尤达
- Antwoord:已建立连接
- Fout: Kan niet verbinden 遇到服务器
因此,它不是发送“需要 331 密码”而是发送“连接已建立”
希望你能帮我解决这个问题,非常感谢。