问题标签 [tcpsocket]

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 回答
763 浏览

c# - C# 中的套接字编程

我正在尝试在 C# 中进行套接字编程,现在我需要了解我们是否需要服务器端的套接字数组才能处理多个客户端,或者服务器端的一个套接字足以处理许多客户端;

并且需要配置从服务器到客户端的所有数据是否已经到达以及服务器的可用性,丢弃客户端请求。

我们是否还需要创建多个线程来处理每个客户端?我需要单独处理每个客户。

0 投票
4 回答
3970 浏览

.net - vb.net中的tcp客户端没有从服务器接收整个数据响应数据

我有一个小程序,它是一个 tcp 客户端。我通过以太网从这个客户端发送一个字符串到一个设备(它充当 tcp 服务器)。一旦设备接收到输入字符串,它就会以响应数据进行响应。我的问题是我没有从服务器获取整个响应数据。(设备)。

Returndata 没有从服务器(设备)返回的完整响应

0 投票
2 回答
997 浏览

c - 无法通过 unix tcp 套接字发送二进制数据

我正在尝试通过 UNIX 套接字实现 ftp 命令 GET 和 PUT,以使用 fread()、fwrite()、send() 和 recv() 等常用函数进行文件传输。

它适用于文本文件,但适用于二进制文件(差异表示:“二进制文件不同”)

任何有关以下内容的建议将不胜感激:

  1. 是否有任何特定的命令来读取和写入二进制数据?
  2. diff可以用来比较二进制文件吗?
  3. 是否可以在内存块中发送二进制部分?
0 投票
4 回答
1663 浏览

java - 通过套接字损坏的十六进制消息

我正在尝试将十六进制消息从 C 服务器传递到 Java 客户端。通讯有效。但是我在 Java 客户端上获得的十六进制值似乎附加了“ff”。为什么会这样?

在 C 端,当我打印要发送的字节(十六进制)时,它们看起来没问题。

请看下面的代码:

C服务器:

Java客户端:

输出: len 的值= -36 缓冲区[5]=0 缓冲区[6]= 0xfffffffdc

更新

这是我的 wireshark 输出(这是 C 服务器推送到 Java 客户端的内容):

请注意,在第 5 行,“00 dc”对应于 datalen=220,它应该存储在 Java 客户端的 len 中。所以Java客户端显然有一些错误。就像你们都提到的那样,我可以使用 Integer.toHexString(((int)buffer[index]) & 0xFF) 进行打印。但我需要用正确的十六进制值存储字节数组。请帮忙

0 投票
2 回答
776 浏览

ruby - 使用 TCPSocket 从 html 表单 POST 中获取内容

在 TCPSocket 对象上重复使用“gets”方法,我收到以下输出

如果我再次使用 .gets 一切都会挂起,我将如何获得长度为 45 的“内容”?我可以从我的 TCPSocket 对象中获取它还是必须使用其他东西?

0 投票
1 回答
2226 浏览

ruby - 关闭 Ruby TCPSocket 客户端时流已关闭(IOError)

我有一个运行良好的 Ruby TCPSocket 客户端,除非我试图关闭它。当我在下面的代码中调用disconnect方法时,出现此错误:

这是(简化的)代码:

有没有办法可以防止或捕获此错误?我不是套接字编程方面的专家(显然!),因此感谢所有帮助。

0 投票
2 回答
6518 浏览

java - SocketException 连接重置

我创建了一个接受 TCP 连接的服务器。连接到套接字后,它循环从输入流中读取数据。

脚步:

  1. 我启动了我的服务器。
  2. 启动客户端。

现在我正在关闭客户。

然后服务器给我 SocketException Connection Reset

在从输入流中读取之前,如何检查我的客户端是否处于活动状态。

0 投票
1 回答
667 浏览

c++ - 如何确保 TCP 套接字在创建时连接

我有一个发送 TCP 数据包的客户端应用程序。目前,我的应用程序这样做:创建一个套接字,绑定并发送数据包。

在另一个线程中,应用程序连接并发送数据包:

现在我想为本地端口指定一个端口范围,所以我将代码更改为

并在我的端口范围内循环 nPortNumber,例如( 4000 - 5000 ),直到绑定成功。

由于我总是从低端口启动我的 nPortNumber,如果之前在同一端口上创建了一个套接字,我会收到 WSAEADDRINUSE 错误作为 errorCode,这对我来说太晚了,因为它已经通过了套接字创建阶段。(为什么我没有在 bind() 或 connect() 获得 WSAEADDRINUSE?)

有没有办法我可以更早地获得 WSAEADDRINUSE 或者有没有办法在绑定和连接的端口范围内创建一个套接字?

提前致谢!

0 投票
0 回答
254 浏览

flash - 如何通过 TCP 套接字稳健地处理参差不齐的连接?

我正在构建一个通过 TCP 套接字与远程服务器通信的客户端。偶尔,客户端会向服务器传递消息,或者服务器会向客户端传递消息。

这将在笔记本电脑上运行,因此连接性将非常不稳定。他们可能会失去他们的wifi,他们可能会让笔记本电脑进入睡眠状态并稍后将其唤醒,等等。我正在实施一个乒乓球系统来检测连接丢失(都在同一个套接字上。客户端ping,服务器乒乓球) .

ping 失败时该怎么办?(或客户端发送一条从未被确认的消息)我可以:

  1. 继续 ping,直到我收到 ping 回复
  2. 关闭socket,反复尝试连接socket,直到连接成功

选项 1 显然更简单一些,但我不知道它是否会让我得到我想要的行为。如果服务器关闭了它的连接端会发生什么?此外,如果笔记本电脑没有 wifi 连接,所有这些 ping 是否会排队,然后在它恢复 wifi 后一起发送?不确定我是否想在每次有人重新连接时用数千次 ping 敲击我的服务器。

客户端是用 Flash 编写的,因此对 KEEP_ALIVE 等选项的低级访问并不多。

0 投票
0 回答
1839 浏览

ruby - Ruby 中的简单 TCPSocket 服务器出现 HTTP 标头问题

我在 Ruby 中对一些简单的 HTTP 服务器实现进行基准测试(没有线程、线程、纤维和事件机器),但是这段简单的代码使用线程失败了:

当数组中的第一个元素是“”或其他字符串,而不是直接响应“HTTP/1.1 200 OK”时,一个简单的 curl http://localhost:8080/可以正常工作。为什么是这样?