问题标签 [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.

0 投票
2 回答
636 浏览

java - J2EE 容器允许直接服务器套接字?

我有一个问题,听起来可能很奇怪。
我很想知道 J2EE 容器是否允许部署的应用程序为自己的目的打开直接服务器套接字(基本上绕过容器)。
我知道这样做很奇怪,但我问的原因是因为,我读过 javax.xml.endoint 不能在容器中启动,并且想知道这是否是原因。

更新:这篇文章的答案似乎与我相矛盾。一个答案(andri)指的是 EJB 规范,它是被禁止的,但 Codemwnci 的另一个答案(由 Hippo 的评论支持)说它是在生产中使用的东西。我不确定从这篇文章中得出什么结论。任何人都可以帮助清除这个吗?

谢谢你。

0 投票
2 回答
210 浏览

java - 什么做错了?(Java 服务器/套接字编程)

我在连接服务器和套接字时遇到了一点问题。我确保 IP 是有效的,所以这不是地址不匹配的问题。也不是不匹配的端口(我也对此进行了测试)。

以下是服务器处理程序

这是插座连接器

p>

首先,我尝试在本地进行测试。我输入了我的 IP 和 IP 127.0.0.1,它们都将我连接到了我在本地设置的服务器。但是,然后我从另一个 IP 尝试,这就是发生的事情。建立连接的线程冻结了一会儿,然后简单地跳到异常并告诉我它找不到主机,而主机从未说过它接受了连接。如果有帮助,我正在使用端口 4424 与服务器连接。在我的代码中是否有任何可能导致这种情况的原因,或者我没有采取什么措施来防止这种情况发生?

另外,如果我没有提供足够的信息,请告诉我。我已经做了大量的测试,并且可以做更多的事情来帮助找出问题所在。

0 投票
1 回答
95 浏览

c - 第一次尝试从套接字读取失败,然后它工作正常

我正在尝试设置服务器。我打算使用 Firefox 作为客户端。这个想法是为您的计算机和服务器中的某个目录写下特定路径以显示该目录的内容。

我创建了绑定它的套接字等。每次有连接时,服务器都会从套接字读取请求并打开相应的目录。

问题是我第一次沿着我想要的路径前进,firefox 似乎一直在等待服务器,而从服务器端看来,服务器似乎在等待将某些内容写入端口以便读取它。如果我停止 Firefox 并刷新,一切都会顺利进行。

我错过了什么吗?:/如果您需要一些编码来帮助您,请告诉我

0 投票
1 回答
4384 浏览

windows-7 - 如何在 Windows7 中允许传入连接到 ServerSocket?

我使用 java 制作了一个自定义的 http 服务器。它在 XP 机器上正常运行,当我使用它的 IP 地址和端口从另一台机器打开到该服务器的连接时,它曾经工作。但在 Windows 7 中它不起作用。当我看到防火墙时,它显示了几条规则。如果有人让我知道我应该启用哪个规则以允许传入连接,那就太好了。

问候, 拉利斯

0 投票
2 回答
690 浏览

java - 套接字传输文件

我有一个这样的 Java 服务器类:

`而客户端是这样的:

一个问题是:为什么循环不会在文件末尾停止?第二个问题是,为什么也这么慢?

0 投票
1 回答
3355 浏览

android - 如果处理多个连接,Android 蓝牙服务器套接字将在 accept() 上被阻止

我研究了android蓝牙示例。
我感到困惑的是,其他设备已经发送了连接请求,并且如果先前的连接存在,则服务器只是被阻塞了很长时间而没有被接受。

android 设备是否可以执行服务器套接字并接受许多连接而不仅仅是一个连接?是否有任何原因可能导致服务器被 accept() 阻塞,例如,不正确的 UUID 或类似的东西?

我做如下操作,

  1. 对于第一个连接,创建服务器套接字并等待连接
  2. 客户端 B 发送连接请求
  3. 服务器套接字接受
  4. 处理 i/o 流
  5. 使用同一个serversocket再次等待连接(我没有关闭serversocket)
  6. 客户端 C 发送连接请求
  7. 服务器套接字被阻塞,阻塞,阻塞,而不是接受......

因为第一次连接成功,第二次连接我没有更改UUID。所以我认为 UUID 不是关键。当第一个连接建立时,服务器套接字将等待另一个连接。可悲的是,它只是等待并被阻止,不接受作为第一个连接。

它是服务器套接字线程的一部分。每当我想建立第二个连接时,logcat 显示它将在日志“ [ServerSocketThread] Enter while loop ”之后停止。似乎操作在accept()上被阻止,但 serversocket 没有为mmServerSocket 抛出 IOException。接受()

如果我想建立第二个连接,我不知道为什么套接字既不被接受也不抛出异常,只是阻塞在那里。如果有任何可能的原因或任何建议,我将不胜感激。

这是我运行应用程序时的一些目录。我希望它有助于识别问题。

Part A : 连接成功,第一次连接

B 部分:这是第二个连接,它让服务器套接字被阻塞而不被接受。

看起来它没有像A部分那样运行BluetoothSppService。但是BluetoothSppService是andorid框架的底层,因此我不知道如何处理。

C部分:如果我断开之前存在的连接,它将按如下方式运行。然后运行A部分。这样我就可以再次建立一个conntion。

创建一个BluetoothSpp代理对象,并执行BluetoothSppService

看起来logcat应该像A部分一样,可以建立连接。我怀疑服务器socket没有接受就被阻塞的原因是这些操作是由较低级别的android平台处理的。但我不知道如何获取或如何执行此服务,例如BluetoothSppServiceJBtlSppNativeJBtlBmg等。

你有这方面的经验吗?
如果是的话,如果您能与我分享,我将不胜感激。或者给我一些关于如何让设备可以接受另一个连接的提示或建议,如果之前的连接已经存在。

0 投票
2 回答
2926 浏览

java - Java - “没有可用的缓冲区空间”套接字错误原因?

我正在用 Java 编写一个网络程序。我使用 ServerSocket 和 Socket 对象通过 TCP 发送和接收消息。如果我的程序运行时间很短,我的程序运行良好,但是如果我运行它更长的时间,我会收到以下错误:

我认为这可能是因为我没有关闭所有套接字,但我更改了代码:我有一个类,当我想要一个新套接字时创建一个类,并添加了一个 finalize 方法来关闭它。我还有一个关闭 ServerSocket 的 finalize 方法,所以我不知道问题是什么。

同样在我收到错误后,如果我立即再次运行该程序,它会比以前更快地遇到问题。然后,如果我等待一段时间并运行它,它会回到原来的时间。

我真的无法解决这个问题,我一直在努力解决这个问题。有谁知道问题是什么?

提前致谢!

更新:

所以我已经弄清楚错误来自哪里,这真的很奇怪。我有以下导致问题的代码:

如您所见,代码应该打开一个套接字并写入它。但是,即使所有功能代码都像上面那样被注释掉,所以套接字只是打开然后立即关闭,我仍然得到“没有缓冲区空间”错误。

我真的不知道为什么会这样。该程序是多线程的,每个线程使用上述方法定期创建对象并调用它。当创建和关闭套接字的行被删除时,我不再收到错误,但是当它们在那里时,即使套接字打开然后立即关闭,我也会收到错误。

有谁知道为什么会这样?

非常感谢。

0 投票
2 回答
2041 浏览

java - Java 多线程服务器 - 每个连接都返回数据。在主线程上处理?

我正在编写一个带有集成服务器的客户端,该服务器应该无限期地等待新连接 - 并在线程上处理每个连接。

我想在主线程上的系统范围内可用的消息处理程序中处理接收到的字节数组。然而,目前处理显然是在客户端线程上完成的。

我查看了 Futures,ExecutorService 的 submit(),但是当我在服务器中创建客户端连接时,数据将返回到服务器线程。如何从那里将它返回到主线程(可能在同步的数据包存储中?)以在不阻塞服务器的情况下处理它?

我当前的实现如下所示:

Update: The robust way seems to be what TomTom suggested - using the newer java.nio instead. As this project is of limited use and more of an experiment, I'd like to know the best way using it with java.io/java.net :)

0 投票
2 回答
7704 浏览

java - 等待 ServerSocket accept() 将套接字置于“监听”模式

我需要一个简单的客户端-服务器通信来实现单元测试。

我的步骤:

  1. 创建服务器线程
  2. 等待服务器线程将服务器套接字置于监听模式( serverSocket.accept() )
  3. 创建客户端
  4. 提出一些请求,验证响应

基本上,我对第 2 步有疑问。当服务器套接字置于“监听”状态时,我找不到向我发出信号的方法。在这种情况下,可以异步调用“accept”,但 java 不支持这一点(它似乎只支持异步通道,并且根据文档,这些通道与“accept()”方法不兼容)。

当然,我可以放一个简单的“睡眠”,但这并不是生产代码的真正解决方案。

因此,总而言之,我需要检测 ServerSocket 何时进入侦听模式而不使用睡眠和/或轮询。

0 投票
2 回答
298 浏览

java - 在建立服务器和客户端之间的连接期间捕获到异常......!

你好家伙刚刚为客户端和服务器编写了一个程序。当我输入“127.0.0.1”或“localhost”时,它工作得很好,但是当我分配我自己的 ip 或者可能是我的一些朋友 ip 时。它不起作用并给出这样的异常

请帮帮我的家伙...!!