问题标签 [system.net.sockets]

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

c# - 模拟远程机器人运动

我正在完成我的导师给我的任务,他向我展示了一个使用 Java 开发的演示项目,但我没有任何 Java 经验,但我在 C# 方面的经验很少,我必须完成给定的要求,例如作为

  1. 使用套接字技术
  2. 客户端/服务器通信协议

场景:需要设计机器人世界,其中包含一些机器人要去探索的未知物体。所以我知道这将是某种动画,比如 2d 游戏,我可以使用 microsoft XNA 进行开发,并使用 C# 设计远程控制接口,并使用 System.Net.Sockets 技术传递参数值来移动机器人

注意:我知道在 Xbox 中使用 System.Net.Sockets 时有限制,但这个项目只能在 PC 中使用。

我的问题:是否有人对我的任务有任何想法或评论,无论是否可能。如果可能的话,请给我一些指导。如果不可能,请指导我使用可以完成任务的技术,例如不同的编程环境或工具????在此处输入图像描述

0 投票
1 回答
1668 浏览

.net - 为什么在写入 NetworkStream 时出现 IOException 和 SocketException?

我有一个将我连接到软件的 dll,我们称之为 driver1。我有一个必须连接到 driver1 并查询其状态的 java 程序。dll 为我提供了连接和查询状态的功能。

我编写了一个 c++ 程序,我将 dll 作为参考,我可以从中使用 dll。我可以连接到 driver1 并查询它的状态。然后我创建了一个 TcpListener,我的 Java 程序可以作为客户端连接它。我只是接受 C++ 中的客户端并等待从 Java 程序接收数据。

我从 Java 端发送数据(例如表示 dll 的“连接”方法的命令)。该命令从 c++ 端很好地接收,它解析并调用 dll 的指定函数。但是,当我想将 dll 函数的返回值写入 NetworkStream 以将返回值发送到 Java 端时,我收到一个异常消息:

System.IO.IOException:IOException:无法将数据写入传输连接。尝试对不是套接字的东西进行操作。

c++ 端代码类似于来自 msdn 站点的 TcpListener 示例:

我在我打电话的那一行得到了例外:

流->写()

关于正在发生的事情有什么想法吗?

提前致谢...

0 投票
1 回答
1746 浏览

c# - 在应用程序关闭期间无法确定 System.ObjectDisposedException 的原因

我被困在调试场景中,我需要帮助了解如何获得有关我的应用程序正在发生的事情的更多信息。

当我关闭主窗体时抛出异常,似乎是在完全关闭之前的最后一点处理期间。

我得到以下两个例外之一,没有明显的原因为什么其中之一。我可以简单地打开应用程序并立即关闭它。将生成两者之一。如果有问题,如果我关注另一个正在运行的应用程序,返回我的应用程序,然后关闭它,那么#2 似乎更有可能。

例外 #1:

无法访问已处置的对象。
对象名称:“System.Net.Sockets.NetworkStream”。
在 System.Net.Sockets.NetworkStream.Write(字节 [] 缓冲区,Int32 偏移量,Int32 大小)

例外 #2:

安全句柄已关闭
System.Net.UnsafeNclNativeMethods.OSSOCK.WSAEventSelect(SafeCloseSocket socketHandle, IntPtr Event, AsyncEventBits NetworkEvents)

在我的应用程序中有两个直接使用 Sockets 的地方。

1) UDPClient 侦听器建立在BackgroundWorker. 只是我们在内部使用的一个小东西来监控数据库命中。

2) 调用我们的网站并获取一些信息的 HttpWebRequest。

这两个都已经运行了一段时间,没有问题,也没有改变,所以我怀疑他们没有罪。

因为这是一个客户端-服务器数据库应用程序,所以有很多网络流量正在进行,并且数据库引擎可能就是发生这种情况的地方。我只是不知道,我需要帮助的地方。

数据包/流量嗅探器?Visual Studio 中的设置/设置以获得有关异常的更好信息?你将如何追踪这件事?

0 投票
1 回答
569 浏览

c# - 如何通过 TCP/IP C# 正确接收所有数据

请原谅我提出一个愚蠢的问题,但我真的找不到解决方案。这就是我试图这样做的方式:

在程序开始时,我启动执行FillBuf方法的线程。问题是由于某种原因我从未收到 1024 字节。先感谢您。

0 投票
1 回答
611 浏览

c# - 从 TCP/IP 服务器获取相同的数据到缓冲区

在客户端,我使用执行此方法的附加线程:

在服务器上,我还有额外的线程,我在其中发送数据,如下所示:

当队列中的元素数量达到某个特定数量时,我从缓冲区中提取数据。

问题是缓冲区中的所有元素都是相同的。谢谢你。

0 投票
1 回答
155 浏览

c# - 如何区分 Socket 对象

您好我正在创建一个纸牌游戏并使用 System.Net 和 System.Net.Sockets 类。我很难做的是弄清楚我将如何区分谁做了什么以及将信息包发送给谁。例如,这是将要发生的事情的顺序。

  1. 用户登录到程序并根据 MySQL 数据库检查凭据。

  2. 用户可以创建一个游戏 ID 或游戏编号,该游戏 ID 也会根据数据库进行检查,以查看是否已经存在匹配的游戏 ID 并允许他们加入游戏,或者如果没有游戏则将数据插入数据库并基本上等待让其他玩家加入它(如果您愿意在线游戏,请考虑服务器浏览器)。

  3. 一旦用户加入正在进行的游戏或创建游戏,它就会调用 Async BeginConnect()。

  4. 用户然后玩游戏,并且像(“打出的牌”)或(“失去生命”)等数据被发送给当前游戏中唯一的其他玩家。

我的问题是如何只将该信息发送给正确的玩家。该游戏仅支持 2 名玩家 1 对 1,但在一个给定时间可能会进行多场游戏。例如,可能有 5 场比赛,每场比赛支持 2 名玩家。对我来说,跟踪这些套接字以便区分游戏 ID 的最佳方法是什么。

我提前感谢您的帮助,如果我遗漏了一些有助于回答我的问题的内容,请告诉我。

更新
我一直在继续查看其他人如何处理跟踪每个用户的单个套接字的示例,或者在这种情况下为 Game Room。我应该为让我们说一个 ClientSocket 创建一个类并为其分配属性吗?

0 投票
2 回答
4360 浏览

websocket - GetHostEntry 与 GetHostAddresses

我一直在尝试找到使用 GetHostAddresses 或 GetHostEntry 的正确情况。我通过阅读这篇文章 ( http://msdn.microsoft.com/en-us/library/ms143998(v=vs.110).aspx ) 了解到 GetHostEntry 将执行反向 dns 查找,而 GetHostAddresses 不会..

但是,在什么情况下您需要使用 GetHostEntry 而不是 GetHostAddresses?另外,GetHostEntry 方法执行反向 DNS 查找的主要原因是什么?

0 投票
1 回答
253 浏览

c# - 如何能够继续从客户端发送到服务器而不遵循顺序并冻结?

我目前正在服务器与客户端之间进行聊天应用。它可以工作,但是它只能遵循[客户端发送到服务器]->[服务器再次发送到客户端]的顺序。如果服务器没有将其发送回客户端,客户端将保持冻结状态。我实际上想让我的客户能够在没有这些序列的情况下继续发送到服务器。有什么建议我可以使用吗?像后台工作者还是什么?我试过按键,但效果不好。我会尝试任何建议,谢谢。
第一个代码是我在控制台应用程序中的服务器代码,第二个代码是我在 Windows 窗体应用程序中的客户端代码。

客户端代码

0 投票
1 回答
675 浏览

c# - 为什么 Socket.BeginAccept() 在我的后台服务 DLL 项目中不起作用?

C# .NET 4.5 Visual Studio 2010

这更像是一种思考练习,而不是校对我的代码。

我正在开发一个在 Windows 中作为服务运行的 HTTP 侦听器。我使用以下代码制作了一个独立的 Windows 窗体项目,它工作正常。每次有请求进来时,我都会出现一个显示 HTTP POST 请求正文的消息框。

问题是,相同的代码在复制到后台服务 DLL 项目中时,不会“捕获”发送给它的 HTTP 请求。这在我用来调试的日志文件中很明显(请参阅Log.Write()下面代码中的调用)。

我在同一台 PC 上运行这一切,所以我认为问题不在于端口正在使用,或者我使用了错误的 IP。

我想知道 HTTP 侦听器是否不起作用是因为它是后台服务,或者可能是因为它是 DLL。

出于安全原因,下面的 IP 地址更改为 1.2.3.4。

0 投票
0 回答
1570 浏览

c# - c#中的TCPIP连接和另一个线程中的数据发送/接收

我的 TCPIP 连接表单程序有问题。

我有一个代码,我正在尝试从服务器发送和接收一些数据。我的应用程序的主要问题是如何协调一些线程:

  • myListenThread - 从服务器监听数据
  • myReadStreamThread - 从服务器读取数据
  • System.Threading.Thread - 主线程,例如。将数据写入服务器
  • captureThread - 做其他事情,比如从相机捕捉图像

我的部分代码:

当我连接到服务器时一切正常,但是当我想发送一些字符串时,由于线程而出现问题。

我决定通过单击 Button3 并等待直到我使用 while 循环从服务器接收到字符串“1”来发送字符串:

并且出现连接问题和数据发送/接收问题,当它应该写入我的字符串“命令”时 - 它没有反应。MyBufferSize 始终为 0,而 myString 始终为空。当我单击 Button3(在代码中分配)时,有时会出现关于连接的错误。我认为这是因为在 captureThread 中我看不到来自其他线程的任何数据。如何解决?