C#通过TCP协议获取数据
2016-08-05 来自:阿桀 1 人回应

服务器上有个服务端。客户端是Sliverlight通过Stocket获取数据的。

  byte[] userbytes = System.Text.Encoding.UTF8.GetBytes(v);

            socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            SocketAsyncEventArgs socketArgs = new SocketAsyncEventArgs();
            socketArgs.RemoteEndPoint = new DnsEndPoint("15.15.0.10", 6003);
            //socketArgs.RemoteEndPoint = new DnsEndPoint("15.15.0.10", 6003
//);
            //将需要发送的内容转为byte[],保存到UserToken属性中
            socketArgs.UserToken = userbytes;
            socketArgs.Completed += new EventHandler<SocketAsyncEventArgs>(socketArgs_Completed);
            //客户端步骤一:发起服务器连接请求。
            socket.ConnectAsync(socketArgs);


void socketArgs_Completed(object sender, SocketAsyncEventArgs e)
        {
            if (e.LastOperation == SocketAsyncOperation.Connect)
            {
               
                //客户端步骤二:连接服务器成功,将需要发送的数据放入缓冲区中,然后异步向服务器发送消息请求
                byte[] userbytes = (byte[])e.UserToken;
                e.SetBuffer(userbytes, 0, userbytes.Length);
                socket.SendAsync(e);
            }
            else if (e.LastOperation == SocketAsyncOperation.Send)
            {
                //客户端步骤三:消息发送成功,此时设置一个新的缓冲区实例,并且发起异步接收服务器返回的消息
                byte[] userbytes = new byte[1024*1024];
                e.SetBuffer(userbytes, 0, userbytes.Length);
                socket.ReceiveAsync(e);
            }
            else if (e.LastOperation == SocketAsyncOperation.Receive)
            {
                //客户端步骤四:获取到服务器返回的消息,关闭Socket
                string RecevieStr = Encoding.UTF8.GetString(e.Buffer, 0, 
                      e.Buffer.Length).Replace("\0", "");
                
                //因为是异步Socket请求,所以需要使用UI线程更新的显示效果
               this.dgdPerformance.Dispatcher.BeginInvoke(new DoThingDele(DoThing),RecevieStr);
               // socket.Close();
            }
        }

Silverlight程序部署在IIS上。但是只能在服务器上通过浏览器获取到数据,局域网的其他电脑查不到数据。这是什么原因?

2016-08-05 来自:老大哥剪脚趾甲

检查下防火墙,关闭服务端防火墙,或者放开你使用到的端口限制。

您的回应

你还未登陆,不能回应!登陆