Tag: 套接字

NetworkStream.Read会挂起/阻止的原因是什么?

MSDN文档似乎暗示NetworkStream.Read将始终立即返回。 如果没有找到数据,则返回0.但是,我有一些当前部署的代码,仅在某些情况下(我还没有想出哪些代码),NetworkStream.Read似乎挂起。 这是我能够从转储文件中收集的堆栈跟踪 00000000705ae850 000007fef784f60d DomainBoundILStubClass.IL_STUB(IntPtr,Byte *,Int32,System.Net.Sockets.SocketFlags)00000000705ae930 000007fef785c930 System.Net.Sockets.Socket.Receive(Byte [],Int32,Int32,System.Net.Sockets.SocketFlags,System .Net.Sockets.SocketError ByRef)00000000705ae9b0 000007ff004eb668 System.Net.Sockets.NetworkStream.Read(Byte [],Int32,Int32)00000000705aea40 000007fef784e6ae MySocketStuff.SocketConnectCallback(System.IAsyncResult)00000000705aeb20 000007fef84f2bbb System.Net.LazyAsyncResult.Complete(IntPtr) 00000000705aeb90 000007fef7853c7b System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object)00000000705aebe0 000007fef784e5d3 System.Net.ContextAwareResult.Complete(IntPtr)00000000705aec40 000007fef7d027f9 System.Net.LazyAsyncResult.ProtectedInvokeCallback(System。 Object,IntPtr)00000000705aeca0 000007fef8b9815e System.Net.Sockets.Socket.ConnectCallback()00000000705aed20 000007fef93e14c2 S ystem.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object,Boolean) 我注意到NetworkStrea.Read实际上调用了Socket.Receive,据我所知,它可以阻塞。 我只是不知道为什么有时它会阻止,有时它不会。

Unity:实时video流

我正在尝试将实时video从一个应用流式传输到另一个应用,目前我有2个应用。 app 1是服务器/发送者,app 2是客户端/接收者。 在app 1中,我成功将video字节发送到客户端。 在客户端,我也收到所有字节。 我使用套接字和TCP。 我面临的问题是,当我收到video字节并将它们分配给原始图像纹理时,纹理上的图像看起来放大太多并且它是如此像素化。 更新的图像 这就是我的流 这就是我在客户端得到的。 这是第一个问题,但我目前正在测试从桌面到另一个,我的目标是将IPAD流式传输到桌面,当我这样做时它很慢并且它会杀死ipad和桌面上的应用程序。 我到目前为止尝试了一些故障 1:我认为这是发生的,因为我有2种不同的分辨率,因为我从ipad流向桌面 2:纹理图像太大,我输出它并返回630.我尝试使用Unity Texture2D.resizeresize但我得到一个灰色纹理,因为该函数将像素设置为未识别 3:我使用其他库来调整纹理大小,我确实得到了我想要的东西,但在12帧之后,rawimage开始在video和“?”之间闪烁。 纹理那么多,然后冻结在两个应用程序(iPad和桌面) 4:我相信我正在阅读纹理的方式导致问题,因为我使用Setpixels和Getpixels函数,它们很重。 我的代码:服务器/发件人方: using UnityEngine; using System.Collections; using System.IO; using UnityEngine.UI; using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; using System.Collections.Generic; public class Connecting : MonoBehaviour { WebCamTexture webCam; public RawImage myImage; Texture2D currentTexture; private […]

Unity中的简单套接字服务器

我想在Unity项目中使用C#插件。 该插件应该充当服务器,它将从客户端获取值,以便我能够使用这些值进行进一步处理。 问题是服务器有无限循环。 无限循环导致Unity挂起。 怎么办呢? 编辑:我附加了服务器程序的代码片段。 在我看来,有两点可能导致问题。 无限循环和程序暂停的点,如代码所示: void networkCode() { // Data buffer for incoming data. byte[] bytes = new Byte[1024]; // Establish the local endpoint for the socket. // Dns.GetHostName returns the name of the // host running the application. IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, […]

服务器客户端发送/接收简单文本

我有一个功课来构建一个应用程序,它将在服务器和客户端之间发送和接收简单的字符串。 我知道如何建立连接,但不知道如何发送和接收字符串。 这是我的代码: public partial class Form1 : Form { private Thread n_server; private Thread n_client; private Thread n_send_server; private TcpClient client; private TcpListener listener; private int port = 2222; private string IP = ” “; private Socket socket; public Form1() { InitializeComponent(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } public void […]