问题标签 [tcpclient]

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 投票
3 回答
2935 浏览

c# - 如何以编程方式处理 telnet 连接延迟?

我利用 TcpClient 类来实现 telnet 连接。我不知道的是如何确定响应的结束。似乎一旦 DataAvailable 属性为真,我从 Stream 中读取数据,然后 DataAvailable 临时设置为 false,而缓冲区正在填充另一块数据,但我认为已全部读取并消失。如何确保已阅读所有回复?

您可能会建议我如何更改下面的代码片段以使其正常工作。当我单步执行代码时它可以正常工作,因为有足够的时间来检索整个响应。感谢你的帮助。

0 投票
3 回答
22322 浏览

c# - C# 当我准备好程序结束时,如何停止 tcpClient.Connect() 进程?它只是在那里呆了大约 10 秒钟!

这是我的第一个问题。每当我退出程序时, tcpClient.Connect() 需要永远关闭。我已经尝试了很多东西,但它们似乎都不起作用。

看看 CreateConnection() 线程,如果客户端还没有连接......我关闭了程序,它需要永远关闭。如果它已连接,它会立即关闭。我知道这可以通过某种超时技巧来完成,但我尝试了一些,但都没有奏效。

如果可以,请提供代码示例。

此外,对于 C# 是否有任何关于使用缓冲区而不是仅执行 masterServer.writeLine() 和 masterServer.readline() 的版本读取/写入实际字节的好教程,或者它们都一样有效?

如果你看到任何其他可以帮助我改进的东西......无论如何,请继续。我正在尝试自学如何做到这一点,但我没有任何帮助,所以如果你看到它,请不要让我继续做错事!!!多谢你们!

0 投票
4 回答
7070 浏览

c# - 确保流式阅读器不会挂起等待数据

下面的代码从 tcp 客户端流中读取所有要读取的内容,并且在下一次迭代中,它将仅位于 Read() 上(我假设等待数据)。我如何确保它不会,并且在没有什么可读的时候返回?我是否必须设置低超时,并在异常失败时响应异常?还是有更好的方法?

0 投票
2 回答
32247 浏览

sockets - How to let kernel choose a port number in the range (1024,5000) in TCP socket programming

When I run the following code:

According to sockets, I must get a port number between 1024 and 5000, but I'm getting port numbers around 30,000.
What should I do?

0 投票
5 回答
948 浏览

vb.net - 如何在 VB.NET 中获取 ASCII 字符串的长度(即字符数)?

我正在使用此代码从 tcpclient 返回一些字符串,但是当字符串返回时,它有一个前导"字符。我正在尝试删除它,但该Len()函数正在读取字节数而不是字符串本身。我怎样才能改变它来给我通常使用它的字符串的长度,而不是字符串本身的数组的长度?

Len()报告字节数而不是字符串中的字符数。

0 投票
2 回答
359 浏览

c# - C#中没有连接到服务器问题

我正在运行客户端/服务器应用程序。我使用文本框让用户输入 IP 地址和端口。我尝试连接到服务器,使用 127.0.0.1 并且没有问题。之后我尝试使用 192.168.2.102 (这台计算机的 NAT ip 地址),但它失败了。知道为什么吗?

我正在使用的代码是:(这是连接的部分)

我检查了调试,它确实使用了正确的 IP 地址和端口。防火墙应该允许它连接。有点奇怪。

编辑: 我想我知道问题所在。在服务器端,我使用

我认为这就是它只接受来自 127.0.0.1 的连接的原因。但是,我应该改用什么?我只想要来自任何 IP 与此端口的任何连接。

0 投票
1 回答
20941 浏览

c# - 等待 TcpClient 数据可用的最佳方法是什么?

有一个更好的方法吗?

0 投票
5 回答
29124 浏览

c# - 调用 BeginAcceptTcpClient 后停止 TcpListener

我有这个代码...

然后我的回调函数看起来像这样......

现在,我调用 BeginAcceptTcpClient,然后一段时间后我想停止服务器。为此,我一直在调用 TcpListener.Stop() 或 TcpListener.Server.Close()。然而,这两个都执行我的 AcceptClient 函数。当我调用 EndAcceptTcpClient 时,这会引发异常。解决此问题的最佳做法是什么?一旦我调用了停止,我就可以放一个标志来停止 AcceptClient 的执行,但我想知道我是否遗漏了一些东西。

更新 1

目前我已经通过将代码更改为如下所示对其进行了修补。

更新 2

我将其更改为暗示 Spencer Ruport 的答案。

0 投票
6 回答
11474 浏览

c# - Read() 阻塞问题

我正在用 C# 开发一个服务器应用程序。客户端可以连接到服务器并发出各种请求。目前,当客户端连接时,我会生成一个新线程来处理请求。我正在使用 TCPClient 类来处理客户端连接。我的服务器工作如下:

  1. 客户端通过请求连接到服务器
  2. 服务器处理请求
  3. 服务器等待查看客户端是否有更多请求
  4. 如果客户端在某个超时时间内没有发出另一个请求,服务器将终止连接

我的问题如下:

当我从 TCPClient 类获得的 NetworkStream 对象中读取数据时,如果没有可用的数据,则 NetworkStream Read() 方法不会阻塞。当服务器到达第 3 步时,我想在 NetworkStream 上设置一些超时,如果客户端在此期间没有发出任何请求,则服务器应该在抛出超时异常时终止连接。当我的服务器到达第 3 步时,NetworkStream Read() 方法不会阻塞,不管我将它的 ReadTimeout 属性设置为什么。任何人都可以帮助我,或者建议一种更好的方法来做我想做的事情。

谢谢

0 投票
2 回答
2275 浏览

java - Java:连接被拒绝,但 netstat 另有说明

我有几个节点使用 Java 的 TCP 套接字(即 Socket 和 ServerSocket)作为服务器和客户端。每个节点使用持久连接与 4 到 10 个邻居进行通信。但是,有时一个节点(node1)在尝试连接到另一个节点(node2)时可能会抛出以下异常:

java.net.ConnectException:连接被拒绝

如果我在 node2 上运行 netstat,它表明已在适当的端口(在本例中为 61685)上与 node1 建立了 TCP 连接。

tcp 0 0 (node2):61685 (node1):55150 已建立

但是,node1 每次尝试连接时都会抛出相同的异常。

ServerSocket 创建如下:

}

发送部分如下所示:

奇怪的是,这些节点通常不会拒绝所有传入的连接,因为在 10 个邻居中,实际上可能有 6 个能够连接,而 4 个被拒绝。我怀疑我尝试过的所有节点上都运行着防火墙,并且很确定该服务正在端口上运行。还有其他原因会引发此异常吗?谢谢!