问题标签 [serversocket]
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.
java - 如何让套接字仅接受来自本地主机的连接(在 Java 中)?
我有一个 java 应用程序(不在任何应用程序容器中运行),它在 ServerSocket 上侦听连接。我希望它只接受来自本地主机的连接。目前,在接受连接后,它会检查对等 IP,如果它不是环回地址,则拒绝它,但我知道对等 IP 地址可以被欺骗。所以,如果可能的话,我宁愿绑定到一个只监听环回接口的套接字;这可能吗?
我尝试了一些不同的方法(例如在调用 bind() 时将“127.0.0.1”指定为本地地址),但都没有成功。提前致谢。
谢谢大家的帮助。我很尴尬地承认这都是我的错。我们的应用程序监听两个不同的端口,我将一个绑定到环回接口,但对另一个进行测试。当我真正尝试远程登录到正确的端口时,一切正常(即绑定到“127.0.0.1”完全符合它的预期)。
至于欺骗环回地址,你们是对的。我不应该让它听起来像主要关注点。确实,所需的行为是只接受本地连接,并且只绑定到本地接口是一种比接受所有连接然后关闭非本地连接更直接的方法。
python - Python 访问 BaseRequestHandler
我的代码基本上需要用客户端启动一个简单的聊天服务器。服务器和客户端可以相互交流的地方。我已经得到了正确实施的一切,但我不知道如何在完成后关闭服务器。(我知道是ss.shutdown()
)。
我现在想根据两者之间共享的关键字(类似"bye"
)结束,但我不知道我是否可以在收到消息时以某种方式向我SocketServer
的 from BaseRequestHandler
to发送消息。shutdown()
最终,我的目标是合并Tkinter
以制作一个 GUI,但我想让其他一切都首先工作,这是我第一次在 Python 中处理套接字。
是的,我知道 setup() 现在使用 try 和 catch 是一个糟糕的函数,但它现在可以工作,所以我打算稍后修复它。
我的问题基本上是:如何根据收到的消息让服务器真正结束?如果可能,有没有办法在请求处理程序启动后访问它?
java - Socket和ServerSocket有什么区别?
如果Socket
代表客户端和ServerSocket
代表服务器端,为什么Socket.read
要从服务器端读取数据?我真的很困惑,你能解释一下吗?
java - Java 套接字接受队列长度
根据 Sun 关于 ServerSocket 的文档:
传入连接指示(连接请求)的最大队列长度设置为 50。如果在队列已满时连接指示到达,则拒绝连接。
如何增加队列长度?这是我服务器的瓶颈。
谢谢你。
apache-flex - 通过 Intranet 或 Internet 完成套接字连接
我正在编写一个点对点二进制套接字程序。只有两个端点。一个套接字正在我的笔记本电脑系统上监听。另一个套接字正在从我的桌面系统广播。我在托管服务器上运行了第三个程序,可用于代理两者之间的连接。我的问题是,当笔记本电脑和台式机在同一个网络上时,它们的互联网IP地址相同,但内网IP不同,但是当笔记本电脑在路上时,IP地址就不同了。为了真正实现点对点,我必须编写它,以便在建立连接后,两台计算机之间可以直接通信。如果两台计算机在同一个网络上运行,它们可能共享相同的 IP 地址,这通常是如何实现的?
java - 每当 ServerSocket 空闲时,Linux 上的 Tomcat6 使用 100% CPU
问候
我在 Ubuntu8.04 上的 Java6 上的 Tomcat6 上运行我的 webapp。这个应用程序的主 servlet 打开一个 ServerSocket,代码如下:
当然,这在一个单独的线程中运行,并带有必要的 try-catch 块。
当我启动 Tomcat 时,它立即进入 100% CPU 负载并一直保持在那里,直到客户端连接到端口 6767。只要客户端连接,负载就会下降到 0%。一旦客户端断开连接,负载就会恢复到 100%。
谁能告诉我这是关于什么的?
谢谢!
解决方案:
下面的两个答案都非常有帮助。该问题实际上与 ServerSocket 无关,而是与应用程序的完全不同线程中的无眠 while 循环有关,但也取决于客户端是否已连接。
我能够使用 JDK 命令“jstack”识别活动线程,然后很容易找到带有失控循环的线程。
谢谢您的帮助!:)
android - ServerSocket 对象是否可以接受 3G 中的连接请求?
我一直在尝试设置 Droid 到 Droid 3G 连接。我可以确认在 wifi 模式下一切正常。Droid 可以在 3G 中发出连接请求(Http、Telnet、原始套接字),但我无法让 Droid 接受 3G 模式下的套接字连接。我正在使用 java.net.ServerSocket 类。
如果有人知道如何对 Droid 进行编程以接受 3G 上的套接字连接请求,请回复。另外,如果有人知道为什么不允许这样做,请回复。
感谢您的观看,
伯格温德克
delphi - 从 ServerSocket 获取连接 ID
我需要从 ServerSocket 获取连接 ID。通过客户端我发送文本,我需要知道哪个客户端发送了文本。有任何想法吗??
java - 如何找出 java 程序可以监听的 Internet 地址
我的程序需要监听传入的套接字连接(让我们在端口 8765 上达成一致),但它不知道它可以在特定机器上绑定哪些地址。当然,它可以简单地收听所有这些,但它需要通过不同的(较慢的)通道向客户端程序发送它应该尝试的地址,以便在端口 8765 上丰富我。
所以流程是这样的:
- 我的程序在端口 8765 上的所有可用接口上侦听
- 找出可能到达的 inet4 地址列表(这一步是实际问题)
- 在白板上写地址的帖子(博文或其他东西)
- 有兴趣的客户尝试所有这些,看看他们可以使用哪一个来访问我的程序。
当然,这一切都将在 java 中完成 :)
java - 连接两个客户端套接字
假设 Java 有两种套接字:
- 服务器套接字“ServerSocket”
- 客户端套接字或只是“套接字”
想象一下两个进程的情况:
X = 客户端
Y = 服务器
服务器进程 Y:有一个“ServerSocket”,它正在监听一个 TCP 端口
客户端进程 X:通过一个“Socket”向 Y 发送连接请求。
Y:那么该accept()
方法返回一个新的客户端类型“Socket”,
当它发生时,两个 Socket 得到“互连”,
所以:客户端进程中的套接字,与服务器进程中的套接字相连。
然后:通过套接字 X 读/写就像通过套接字 Y 读/写。
现在,两个客户端套接字相互连接!
但是......
如果我在同一个进程中创建两个客户端套接字,我想让它们“互连”怎么办?
……甚至可能吗?
让我们说如何在不使用中间 ServerSocket 的情况下让两个客户端套接字互连?
我已经通过创建两个线程来连续读取 A 和写入 B 以及另一个用于读取 B 和写入 A 来解决它......
但我认为可能是一个更好的方法......(那些世界能源消耗线程是不必要的使用客户端-服务器方法)
任何帮助或建议将不胜感激!谢谢
编辑:
应用示例:“可以将现有的服务器应用转换为客户端”,例如VNC服务器,一个客户端socket连接到VNC服务器,并创建另一个客户端socket(连接到中间服务器),然后应用互连两个客户端导致 VNC 服务器是客户端应用程序!然后,不需要公共 IP。
VNCServer---MyApp---> |中间服务器| <---用户