gpt4 book ai didi

c - FTP 客户端无法与我实现的 TCP 服务器通信

转载 作者:行者123 更新时间:2023-11-30 18:55:08 25 4
gpt4 key购买 nike

我正在实现我自己的 TCP 服务器。到目前为止,我可以建立连接,效果很好,我可以连接到任何客户端。但是,当我想从客户端发送或接收消息时,就会出错。以下是我的服务器最后一部分的片段,我想在其中将消息 WeLcOmE 发送到我的客户端(我使用 C 编程语言和 Linux 作为操作系统):

// Accept a connection request
int clientAddress = sizeof(client_address);
int new_socket = accept(door_socket, (struct sockaddr *) &client_address,
&clientAddress);
if (new_socket < 0)
perror("ERROR on accept");

// Receive data from socket, send data to socket
char buff[8] = "WeLcOmE";
send(new_socket, buff, sizeof(buff), 0);

// Close socket
close(new_socket);
close(door_socket);
return 0;
  • 使用 Filezilla 客户端运行我的服务器,这就是我得到的结果:

Status: Resolving address of ubuntu
Status: Connecting to 127.0.1.1:3471...
Status: Connection established, waiting for welcome message...
Response: WeLcOmE
Error: Could not connect to server
Status: Waiting to retry...
Status: Resolving address of ubuntu
Status: Connecting to 127.0.1.1:3471...
Status: Connection attempt failed with "ECONNREFUSED - Connection refused by server".
Error: Could not connect to server

  • 使用 ftp Linux 内置客户端运行我的服务器,得到:

ftp> WeLcOmE421 service not available remote server has closed connection

我不明白为什么会发生这种情况。如有任何帮助,我们将不胜感激。

最佳答案

正如您自己所说,您已经实现了一个“TCP”服务器。服务器所做的就是将“WeLcOmE”字符串发送到连接到服务器的任何 TCP 客户端。

如果您使用 FTP 客户端连接到服务器,客户端会收到“WeLcOmE”字符串,并且由于该字符串不符合 FTP 协议(protocol)规范,因此客户端会出错。

如果您与使用特定协议(protocol)的任何其他客户端连接,也会发生同样的情况,例如Web 浏览器 [HTTP]、终端客户端 [SSH 或 Telnet] 等。

现在的问题是,您想要实现什么目标:

  • 您想要实现 FTP 服务器。为此,您需要阅读 FTP 规范并根据它实现您的服务器。这是一项艰巨的任务,一般来说您不想这样做。您最好采用现有的实现。一个 FTP 服务器库并在其上构建您的自定义 FTP 服务器。或者采用完整的开源 FTP 服务器并根据您的需求进行自定义。
  • 或者您只是玩玩您的玩具 TCP 服务器并且想测试它。为此,请使用任何可以在“原始”模式下工作的 TCP 客户端,通过从套接字读取数据并仅显示所获取的内容,而不尝试以任何方式解释数据。您可以使用PuTTY在“原始”连接模式下。参见Making raw TCP connections部分在 PuTTY 文档中。

关于c - FTP 客户端无法与我实现的 TCP 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28613675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com