问题标签 [socketserver]

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 投票
2 回答
1213 浏览

android - Adobe Flex/Air ServerSocket:来自 Socket 类的远程连接

我不得不问这个问题,因为 Flash/Flex 快把我逼疯了。

我在桌面上的 Air 环境中使用 ServerSocket 类来设置一个侦听移动客户端的服务器(Air for mobile)。我在调试模式(Flash Builder)下对此进行了测试,一切正常:ServerSocket to listen to 127.0.0.1:8889(local machine)--> Connection to 127.0.0.1, port 8889 setup on the mobile (local machine) -->查看。

所以我在我的android智能手机上安装了应用程序(WiFi连接)并输入了机器IP和端口但我无法连接:ServerSocket to listen to 127.0.0.1:8889 (local machine) --> Connection to 192.168.2.101,移动设备上的 8889 端口设置 --> 不工作。

只是为了测试,我设置了一个简单的 Java 服务器,连接到 Java SocketServer 并且它工作正常。所以我假设问题出在 Air 环境的 SocketServer 类中。

你有什么想法?如果你们能提供帮助会很高兴。

新年快乐!

0 投票
1 回答
274 浏览

c# - 在我的应用程序关闭后仍在监听端口是不是很糟糕?

我的应用程序在某个端口上侦听套接字消息。我可以看到它正在通过命令行的“netstat -a”进行监听。

当我关闭应用程序时,当我重新运行“netstat -a”时,机器仍在侦听该端口

这是一个问题吗?

看起来可能是这样,因为当我随后再次启动该应用程序时,它可耻地崩溃了。

我怎样才能让聆听停止?

0 投票
1 回答
1579 浏览

python - 与 SocketServer 实例的 Python 多处理通信

我有一组进程,我们称它们为 A、B 和 C,它们需要相互通信。A 需要与 B 和 C 通信;B 需要与 A 和 C 通信;C 需要与 A 和 B 通信。A、B 和 C 可以位于不同的机器上,也可以位于同一台机器上。

我的想法是通过套接字进行通信,如果它们都在同一台机器上,则使用“localhost”(例如,A 在端口 11111,B 在端口 22222 等)。这样,非本地进程将被视为本地进程。为此,我想我会为 A、B 和 C 中的每一个设置一个 SocketServer 实例,并且它们中的每一个都会知道另外两个的地址。每当需要进行通信时,例如 A 到 B,A 就会打开一个到 B 的套接字并写入数据。然后 B 的持续运行的服务器将读取数据并将其存储在列表中以供以后需要时使用。

我遇到的问题是存储的信息没有在finish_request方法(处理监听)和__call__方法(处理谈话)之间共享。(服务器类是可调用的,因为我需要它来做其他事情。我认为这与问题无关。)

我的问题是这会像我想象的那样工作吗?将multiprocessing,threadingsocketserver一起在同一台机器上玩得好吗?我对使用其他机制在进程之间进行通信(如Queueor Pipe)不感兴趣。我有一个可行的解决方案。我想知道这种方法是否可行,即使效率较低。而且,如果是的话,我做错了什么阻止它工作?

下面是说明该问题的最小示例:

查看此示例的输出,将有三种类型的打印:

“MID”是该实例中的id如果双端队列。migrants“From”和“To”是发送/接收传输的端口。我现在只是将数据设置为随机的十六进制字符串,以便我可以跟踪单个传输。

我不明白为什么,即使使用相同的 MID,有时它会说它的大小是非零的,然后它会说它的大小是 0。我觉得它必须源于这样一个事实调用是多线程的。如果使用这些行而不是最后的 2 个for循环,系统将按我预期的方式工作:

那么破坏它的多处理版本发生了什么?

0 投票
1 回答
1636 浏览

python - python socketserver偶尔会停止发送(和接收?)消息

我一直在遇到我写的套接字服务器的问题,其中套接字服务器似乎停止在它使用的一个端口上发送和接收数据(而另一个端口继续处理数据就好了)。有趣的是,在等待一分钟(或长达一小时左右)之后,socketserver 将再次开始发送和接收消息,而无需任何可观察到的干预。

我正在使用 Eventlet 套接字框架 python 2.7,一切都在 ubuntu aws 实例上运行,外部应用程序打开到套接字服务器的持久连接。

从我一直在做的一些阅读中,看起来我可能没有正确实现我的套接字服务器。根据http://docs.python.org/howto/sockets.html

套接字的基本事实:消息必须是固定长度(yuck),或者是分隔的> >(耸肩),或者表明它们有多长(更好),或者以关闭连接结束。

我不完全确定我在这里使用的是固定长度的消息(或者我是吗?)

这就是我接收数据的方式:

“sock”是 listener.accept() 函数返回的套接字对象。

socket_handler 函数调用如下:

我的实现对任何人来说都是不正确的吗?我基本上是在实现一个固定长度的会话协议吗?我可以做些什么来帮助调查问题或使我的代码更健壮?

提前致谢,

0 投票
0 回答
455 浏览

c# - 试图强制我的应用程序关闭并且 TcpListener 停止监听 - stackOverflow

我的双重角色应用程序(在另一台机器上运行的“服务器”角色)在我关闭它时实际上无法关闭(关闭应用程序后它仍在任务管理器的“进程”列表中)。

我不知道它是否因为它的 TcpListener 类仍在侦听而保持“活动”,或者 TcpListener 类是否仍在侦听,因为应用程序还没有真正关闭。

所以,我添加了两段代码:

1)这里的最后一行(listener.Stop()):

...和:

2)

为什么调用 Close 时会出现 Stack 溢出?

0 投票
2 回答
700 浏览

python - 从路由器后面创建一个公开可用的 TCPServer

python 2.7.2 windows 7 32位

让我以我对网络编程相当陌生来开始这个问题。我使用 python 的内置 SocketServer 创建了一个简单的服务器和客户端

当主机是“localhost”并且客户端和服务器在同一台机器上时,这可以正常工作。但是我希望能够通过互联网访问服务器。我的电脑在路由器后面。我正在使用 pystun(如下)来确定我的计算机公共 IP 地址,但无法连接。我做了一些研究,据我了解,当程序打开一个端口时,路由器会识别出该端口并将流量转发到该计算机。这似乎没有发生。我在禁用防火墙的情况下得到相同的结果。我需要使用端口转发吗?大多数应用程序如何能够从路由器后面进行通信?我在这里查看了打孔器以下来源)和通过 win32com 进行的端口转发. 我正在寻找可以为我指明正确方向的人。如何以编程方式让服务器从路由器后面打开侦听端口并将流量转发给它?

打孔器来源:https: //coherence.beebits.net/svn/trunk/Puncher/puncher/base.py pystun:http ://pypi.python.org/pypi/pystun

0 投票
2 回答
1170 浏览

python - 停止 UDP SocketServer

我正在创建一个 UDP SocketServer,如果我从客户端收到一条关闭消息,我想关闭而不是关闭 UDP 连接。

当我收到消息时,Begin将显示,但Finished不显示。我怎样才能退出这个线程?

0 投票
1 回答
1476 浏览

c++ - Flash 客户端 C++ 服务器连接由对等方重置

我们的应用程序涉及 C++ 套接字服务器、与 C++ 服务器通信的 Flash 客户端以及将 crossdomain.xml 提供给 Flash 客户端的 Python 套接字服务器。C++ 服务器调用 REST 操作并将结果返回给 Flash 客户端。所有这些都托管在 Linux 64 位服务器 - Debian 上。

对于我们的一些用户,当游戏服务器尝试从套接字读取(在​​ recv() 上)时,我们有很多“对等连接重置”。Flash 策略服务器也有来自“对等连接重置”的类似数量。

我正在寻找想法,资源,这个问题的原因是什么。可以肯定这不是因为服务器过载——用户是什么——有时是 3 个用户,有时是 300 个用户。

我们在我们的私人服务器上进行了测试,情况是一样的。

我们怀疑可以解决问题的方法:

  • Flash 客户端与 C++ 服务器通信以及与套接字通信的问题。
  • 网络问题
  • 一些组合 tcp 选项

我们做了什么:

  • 从客户端捕获安全和 IO 错误。我们只记录它们:(

我们想做什么:

  • 将 C++ 服务器的优先级更改为 -5 或 -10 - 我希望这可以提高 IO 操作。

我知道“梨重置连接”的原因 - 我在 stackOverFlow 和谷歌中检查了很多 - 但我找不到解决这个问题的方法。

0 投票
1 回答
209 浏览

python - 如何向客户端发送数据?

我尝试使用正常的套接字发送数据,这很有效。但是,我正在处理的代码正在使用 socketServer 并且无法更改。我找不到任何将数据发送到服务器的示例。我怎样才能做到这一点?

0 投票
1 回答
71 浏览

python - 哪个更适合用于基本服务器/客户端套接字实现的服务器,“socket”或“socketserver”?

我读过socketserver更容易使用,但是对于刚刚学习sockets的人来说,socket或socketserver哪个会更快,更适合初学者?对于使用流套接字的非常基本的客户端/服务器设置。(Python)