【发布时间】:2015-02-19 18:04:51
【问题描述】:
我正在实现我自己的 TCP 服务器。到目前为止,我可以建立一个连接,效果很好,我可以连接到任何客户端。但是,当我想从客户端发送或接收消息时,它会出错。以下是我服务器最后一部分的 sn-p,我想将消息 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 客户端运行我的服务器,这就是我得到的结果:
状态:正在解析ubuntu的地址
状态:正在连接到 127.0.1.1:3471...
状态:已建立连接,等待欢迎消息...
回复:欢迎
错误:无法连接到服务器
状态:等待重试...
状态:ubuntu的解析地址
状态:正在连接到 127.0.1.1:3471...
状态:连接尝试失败,出现“ECONNREFUSED - 连接 被服务器拒绝”。
错误:无法连接到服务器
- 使用 ftp Linux 内置客户端运行我的服务器,我得到:
ftp> WeLcOmE421 服务不可用远程服务器已关闭连接
我不明白为什么会这样。任何帮助表示赞赏。
【问题讨论】:
-
FileZilla 日志清楚地显示它收到了“WeLcOmE”消息。然后您的代码关闭连接套接字和主监听套接字并从函数返回。你期待会发生什么?
-
哎哟!您可能希望对
send的返回值添加一些错误检查。是什么让您认为服务器会接受"WeLcOmE"的消息?例如,如果您将其发送到 http 服务器,您认为会“提供”什么样的响应或内容?