问题标签 [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 投票
1 回答
958 浏览

ruby - Ruby TCPSocket 不断失去连接

我有一个客户端和服务器。我启动服务器,运行客户端,第一次运行良好。我第二次运行客户端(没有重新启动服务器),客户端似乎挂起。任何人都可以看到有什么问题吗?

我有一个客户:

和服务器:

0 投票
1 回答
377 浏览

ruby - 红宝石套接字问题

我仍然是 ruby​​ 的新手,但我习惯于使用 ruby​​ 套接字,因为我多次使用 'Socket' 类,所以我可以完全控制我的套接字及其选项。

问题是我试图让它对我来说有点容易,所以我试图使用'TCPSocket'类,女巫(我猜)并没有像'Socket'类那样给你太多的控制权。

我的脚本如下所示:

问题是,发送线上的“0”应该是什么?如果'0'表示标准数据包,除了标准之外可以存在什么,它是对TCP数据包的一些控制吗?如果是这样,那么对我来说这比使用“Socket”类手动编写整个套接字要容易得多。

0 投票
1 回答
3005 浏览

ruby - Ruby TCPSocket recv 阻塞且永不返回

所以,我有以下代码:

结尾

通常情况下,它工作得很好。我正在与之交谈的服务器通常会很快返回响应,并且一切都很好。

然后,今天,服务器出了点问题。不是我的问题,但是,这导致我的整个应用程序挂起,等待 recv 超时。这并不完全是最优的。

如果我没有立即听到回音,有没有办法让 recv 超时?我尝试查看 ruby​​ 文档,但它真的让我感到困惑(即 TCPSocket 只实现了三个方法,它们都没有 open 或 recv,它的 Socket 父类也没有实现这些方法。而且 Socket 的父类似乎是 Object ? 我完全糊涂了)

0 投票
2 回答
1038 浏览

cocoa - 一次从一个 TCP-Socket 向另一个发送超过 32768 个字节

嘿伙计们,我不知道这个问题是否已经被问过,但想象一下以下情况:

我有两个 TCP-Sockets(用两个打开NSSocketPortund 监听NSFileHandle),现在我想NSData在它们之间发送一些。

在我想发送NSData一个长度超过 32768 字节的实例之前,一切都是正确的。超过此数量的字节将不会被传输。所以这是我的问题:

1) 为什么 Cocoa 不能一次发送超过 32768 字节?
2)我必须解决问题吗?
3)如果是,我会拆分数据,但你会怎么做?另一个套接字如何知道所有数据何时发送?

顺便说一句,在发送这个单一NSData实例之后,两个套接字都应该再次关闭。

0 投票
3 回答
7235 浏览

ruby - Ruby TCPServer 套接字

也许我把我的套接字编程方式搞混了,但这样的东西不应该工作吗?

我已经尝试了几乎所有其他从客户端 TCPSocket“获取”数据的方法,但它们都挂起并且永远不会跳出循环(getc、gets、read 等)。我觉得我忘记了什么。我错过了什么?

0 投票
1 回答
569 浏览

ruby - 使用凭据进行 ruby​​ 套接字编程

嗨伙计,

我正在尝试使用 ruby​​ 套接字连接 TcpSocket 建立与远程服务器的连接。

我从 TcpSocket.new(port,host) 开始

现在,我如何将凭据传递给它。

远程服务器需要凭据才能让我连接。

很感谢任何形式的帮助。

谢谢

0 投票
1 回答
2453 浏览

ruby - Ruby TCPSocket:找出有多少数据可用

有没有办法在 Ruby 中找出 TCPSocket 上可用的数据字节数?即在不阻塞的情况下可以准备多少字节?

0 投票
3 回答
5374 浏览

xml - 使用 Qt 通过 TCP 套接字部分发送 xml 消息

我们正在编写一个项目,其中有一个客户端生成 xml 请求,将它们发送到服务器,服务器解析请求并以 xml 字符串返回请求的信息。

当 xml 回复很小时,应用程序可以正常工作,但是当它们超过大约 2500 个字符时,它们有时会在客户端被截断。我有时会说,因为当客户端和服务器在同一台机器上运行并通过家庭地址 127.0.0.1 进行通信时,回复被解析得很好。但是,当客户端和服务器在不同的机器上并通过局域网进行通信时,客户端会将消息削减到大约 2500 个字符。

通信由 tcp 套接字完成。我们正在使用 Qt,客户端有一个 qTCPsocket,服务器有一个 qTCPserver 和一个指向 qtcpsocket 的指针。

我们认为解决我们的问题的一个可能的解决方案是发送 xml,按字符数或标签分隔。虽然我们很容易将消息分成几部分,但发送这些部分并让客户端或服务器读取并将这些部分编译成一个 xml 请求会给我们带来麻烦。

例如,我们想测试让客户端分多个部分发送请求。

这是我们发送请求的客户端函数调用。xmlReq 在 else where 生成并传入。作为将消息分成几部分的示例,我们从 xml 请求中去掉结束标记,然后稍后将其作为另一部分发送。

接下来是我们的服务器代码。它是这样写的,它应该从客户端读取消息,直到它看到 xml 关闭消息标记,然后处理数据并将回复发送回客户端。

这是启动服务器的代码。

当它获得一个新连接时,它会调用 acceptConnection 插槽,如下所示

startRead 看起来像这样:

在我看来,开始读取的编码方式是,只要客户端写入消息,服务器就会读取它并将其附加到服务器存储的 xmlRequest 中。如果消息包含 xml 结束标记,则它处理请求。

但发生的情况是,如果客户端连续写入,服务器不会全部读取它们,只会读取第一个,并且永远不会收到 xml 结束标记,因此不处理任何请求。

我需要回答的问题是为什么服务器不响应客户端多次写入?我应该怎么做才能发送一个 xml 字符串,分成几部分,让服务器读取所有部分并再次将其转换为一个字符串?

0 投票
2 回答
1417 浏览

multithreading - 在 Qt 4.7 中不阻塞 ui 的联网

我有一个服务器,多个客户端可以连接到该服务器。客户端是 GUI,而服务器是命令行。客户端有几个功能(例如连接和登录),当发送到服务器时应该收到回复。

基本上我需要运行 QTcpSocket 函数 waitForConnection 和 waitForReadyRead。但是,我需要在不阻塞 UI 的情况下执行此操作。

我想做的是:让一个类(客户端)实现 QThread 来完成所有的等待。这是在 main.js 中创建的。

然后,每当我准备好建立连接时,我都会运行 GUI(例如,ConnectToServerDialog)。我将线程中的“已连接信号”连接到对话框,因此当我连接或连接超时时,它将发出此信号。

我遇到了一个断言失败(无法将事件发送到不同线程拥有的对象。)由于我对 Qt 相当陌生,我不知道我正在做的事情是否正确。

有人可以告诉我我正在做的事情是否是一个好方法,如果是,为什么我的程序会崩溃?

0 投票
3 回答
5385 浏览

arrays - 如何将 24 位整数转换为 3 字节数组?

嘿,我完全超出了我的深度,我的大脑开始受伤了.. :(

我需要转换一个整数,以便它适合 3 字节数组。(那是 24 位整数吗?)然后再次返回以通过套接字从字节流发送/接收这个数字

我有:

我想我的主要问题是我不知道如何检查我是否确实正确地转换了我的 int,这也是我发送数据需要做的转换。

非常感谢任何帮助!