问题标签 [tcpserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
950 浏览

c - 您如何将路径从客户端传递到服务器?

您好,我正在尝试制作一个我想要这些东西的 TCP 客户端/服务器。客户端将给出文件名或文件名的路径。服务器将找到该文件并提供以下详细信息:权限、大小、所有者、所有者组、修改/创建日期、字数、用户 ID 和优先级,如果出现问题,将这些信息发送给 -1 的客户端。客户端将打印这些详细信息。我已经做了很多这样的事情,但我有一个很大的问题,所以我无法继续,我的问题是服务器无法识别文件的路径,但我尝试命名文件并通信正常。我在做什么错误的?先感谢您


感谢您的快速回复。具体来说,教授没有要求我们制作我创建的这个 txt 文件,但我创建的原因是我找不到解决方案,我无法将所有内容写入缓冲区。应该是这样的:

缓冲区我来自客户端的路径从缓冲区中找到路径文件(这是我有问题的地方)ls -al 写入缓冲区(我将其写入.txt)wc 写入缓冲区(我将其写入.txt)路径写入缓冲区(还没有这样做)用户信息写入缓冲区(还没有这样做)缓冲区发送到客户端客户端打印所有这些信息的缓冲区

我试过 sprintf 但我不明白你是如何使用它的,但是这个命令看起来比我的要好,谢谢:)。如果我理解得很好,No 会通过缓冲区。

0 投票
2 回答
341 浏览

c - 当父母被告知要杀死孩子(c)时,如何将其他参数挤入收割机函数?

我正在编写一个功能非常类似于聊天室的 TCP 服务器并遇到了这个问题。

当用户连接时,会创建一个子进程来为用户服务。
当用户登录时,我将他的用户名存储到一个文本文件中,online.txt
但是当用户注销时,我需要从(问题)中删除用户,然后是online.txt父级并杀死孩子。signalsreaper()

我的问题是:

Q1:我如何向收割者提供额外的信息(例如用户用于登录的用户名),以便它也可以将用户从中删除online.txt?或者还有其他更好的方法吗?

Q2:siginreaper()的价值从何而来?我可以向收割者添加其他参数吗?

Q3:我可以使用孩子的 pid 作为 login.txt 的某种主键吗?如果是这样,我如何reaper()在父母调用的过程中检索孩子的 pid?

收割者看起来像这样:

父级使用的信号如下所示:

提前谢谢你,我希望一次问3个问题不会太贪心。
对任何问题的任何见解都将不胜感激。

0 投票
2 回答
261 浏览

c - 收割者呼叫后服务器堵塞

我正在使用 TCP 服务器,但出现了一些非常奇怪的东西。

当我与一个客户联系时,一切都很好。
当两个或更多客户端连接时,流量仍然很好。
但是,当任何客户端断开连接时,服务器会在收割者调用后立即卡住。它只是坐在那里等待。

当我从 2 个客户端中断开 1 个客户端并尝试重新连接时,我发现了这一点。重新连接的客户端根本不显示任何错误消息,它运行顺利。包可以发送到服务器,但它堆积在服务器内部。

另一方面,服务器挂在那里,等待一个特定的客户端断开连接。如果该客户端断开连接,服务器将恢复功能,执行堆积在其中的所有请求。

下面是我用于服务器结构的准系统代码。
此代码还演示了上述问题。
有人可以请,请指出错误发生在哪里?

任何抬头将不胜感激。
我提前谢谢你。

0 投票
3 回答
3948 浏览

ruby - 如何防止“连接已重置”错误?

我有一个用 Ruby 实现的非常基本的 TCP 服务器。一般来说,它会做它应该做的事情,但每隔一段时间我就会收到“在页面加载时重置与服务器的连接”错误。我有一种感觉,这与close过早终止连接有关。如果是这样,我如何等待发送所有数据?或者是别的什么?

0 投票
1 回答
223 浏览

java - 是否可以让非阻塞服务器和阻塞的 I/O 客户端通信?

我只是想知道,是否有可能有两个相互通信的套接字,一个使用阻塞 I/O,另一个使用非阻塞 I/O?

0 投票
1 回答
907 浏览

c++ - Qt TcpServer 架构

问题是关于使用 Qt 的服务器的体系结构。例如,ReadyRead()当一个套接字发出信号时,会调用一个槽readyRead() 如果有几种请求,我们可以

我想知道还有其他方法可以做到这一点。我想这不是可扩展和舒适的。

如果我希望服务器与用 Java、C、Perl 等编写的客户端一起工作,我应该只使用 QByteArray,对吗?在来自 QtDemo 客户端的所有示例中,在消息之前发送消息的大小。有必要吗?

如果您建议我对一些用 Qt 编写的服务器(在 github、bitbucket 等)上进行采样,那就太好了。我想看看生产服务器是如何安排的。

0 投票
2 回答
2036 浏览

c# - C# 通过 Web 应用程序发送和接收 tcp 数据包

嗨,我们正在编写一个独特的项目。我想知道是否有人可以为我们指明正确的方向,因为我不熟悉 tcp 编程。

我们与外部系统交谈。我发送一个 tcp 数据包并接收到 tcp 响应。这需要从 Web 应用程序中的页面工作,每 x 毫秒不断轮询

建议的消息长度为 8 个字节,不传输有关消息开始或结束的信息。消息结构:| 字节 0 | 字节 1 | 字节 2 | 字节 3 | 字节 4 | 字节 5 | 字节 6 | 字节 7 |

消息分隔符是:| 字节 0 | = 0x02 (stx) 和 | 字节 7 | = 0x03 (etx)

我的发送信息:| stx | 's' | 'b' | '0' | '0' | '0' |'0' |etx |

我的接收信息:| stx | 'S' | 'B' | '0' | '1' | '0' | '0' | 等|

问题:

我应该使用 tcpCLient/Listener 类还是 Sockets 类?

让网页每 x ms 连续轮询和发送/接收这些数据包的最佳方法是什么?

0 投票
3 回答
6987 浏览

python - 关闭后直接在代码中使用 ThreadingMixIn 再次启动 TCPServer。(给出“地址已在使用中”)

我尝试在 Python 中使用线程(ThreadingMixIn)对 TCPServer 进行编程。socket.error: [Errno 48] Address already in use问题是当我尝试再次运行它时,我无法正确关闭它。这是触发问题的 Python 代码的最小示例:

所有主要代码应该做的是启动服务器,关闭它并再次运行它。但它会触发上述错误,因为第一次关闭后套接字尚未释放。

我认为设置self.allow_reuse_address = True可以解决问题,但没有奏效。当 python 程序完成后,我可以立即再次运行它,它可以启动服务器一次(但不能再次启动两次)。
但是,当我随机化端口(例如替换为)时,问题就消失了,1234因为1234+i没有其他服务器正在侦听该地址。

有一个类似的 SO Q从 ThreadingTCPServer 正常关闭,但解决方案(设置allow_reuse_addressTrue不适用于我的代码,我不使用 ThreadingTCPServer)。

我如何必须修改我的代码才能在我的代码中启动服务器两次?

更多信息:我这样做的原因是我想为我的 python 项目运行一些单元测试。这需要提供我的软件应该连接到的(假)服务器。

编辑
我刚刚找到了对我的问题最正确的答案:我必须fake_server.server_close()在我的主要执行代码的末尾添加(就在之后fake_server.shutdown())。我在TCPServer实现的源文件中找到了它。它所做的只是self.socket.close()

0 投票
3 回答
1000 浏览

c++ - linux上有c++ tcp服务器吗?

我想用 c++ 开发一个无阻塞 tcp 服务器,有没有像 Twisted 这样的开源项目?

0 投票
1 回答
1752 浏览

ruby - Ruby tcpserver 客户端 服务器

我有一个应用程序,我正在编码通过 tcpsocket 将日志信息发送到服务器,并让监视器客户端连接到服务器以查看日志数据。到目前为止,我能够进入将信息发送到服务器的阶段,但是我需要一些关于如何进行下一阶段的想法。使用 Ruby tcpsever 我可以使用哪些方法让服务器将传入的数据重新发送到客户端?如何跨线程存储数据?