服务器上有个服务端。客户端是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上。但是只能在服务器上通过浏览器获取到数据,局域网的其他电脑查不到数据。这是什么原因?
检查下防火墙,关闭服务端防火墙,或者放开你使用到的端口限制。