Flex Socket 与 C# 通信

Flex

<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="absolute" >
< mx:Script >
    
<![CDATA[
        import mx.controls.Alert;
        /////////////////////////////////
        //private member 
        private var xmlsocket:XMLSocket= new XMLSocket();
        private var alert:Alert;
        private var tmpStr:String;
        
        /////////////////////////////////
        
        //连接服务器
        private function ConncetServer():void
        {
            xmlsocket.addEventListener(DataEvent.DATA,OnRecived);
            xmlsocket.addEventListener(Event.CONNECT , onConnected);
            this.xmlsocket.connect(this.txtIP.text,int(this.txtPort.text));
            
        }
    
        private function onConnected(evt:Event):void
        {
            xmlsocket.send(this.txtTrueName.text+" has connected");
            this.txtContent.text=this.txtContent.text+"连接成功\n";
        }

        //发送信息
        private function Send():void
        {
            this.xmlsocket.send(this.txtTrueName.text+"|"+this.txtSendContent.text+"\n");
        }
        
        //接收数据
        private function OnRecived(event:DataEvent):void
        {    
            trace("等待读取数据信息");
            
            tmpStr = event.text;
            
            //alert=Alert.show("收到新消息","消息");
            
             this.txtContent.text=this.txtContent.text+"\n"+tmpStr;
        }
    
]]>
</ mx:Script >
    
< mx:Panel  layout ="absolute"  right ="0"  left ="0"  top ="0"  bottom ="0"  horizontalAlign ="left" >
        
< mx:TextInput  cornerRadius ="20"  themeColor ="#0D79BE"  borderColor ="#070D04"  borderStyle ="inset"  borderThickness ="1"  id ="txtIP"  text ="192.168.1.55"  left ="88"  top ="23" />
        
< mx:TextInput  cornerRadius ="20"  themeColor ="#0D79BE"  borderColor ="#070D04"  borderStyle ="inset"  borderThickness ="1"  width ="94"  id ="txtPort"  text ="9992"  left ="293"  top ="23" />
        
< mx:TextInput  cornerRadius ="20"  themeColor ="#0D79BE"  borderColor ="#070D04"  borderStyle ="inset"  borderThickness ="1"  width ="94"  id ="txtTrueName"  text ="小虎"  left ="432"  top ="23" />
        
< mx:Label  text ="服务器IP"  fontSize ="12"  left ="15"  top ="23" />
        
< mx:Label  text ="姓名"  fontSize ="12"  left ="395"  top ="23" />
        
< mx:Label  text ="端口"  fontSize ="12"  left ="256"  top ="23" />
        
< mx:Button  label ="登录"  fontSize ="12"  id ="btnLogin"  left ="552"  top ="23"  click ="ConncetServer()" />
        
< mx:Button  label ="发送"  fontSize ="12"  id ="btnSend"  left ="552"  top ="68"  click ="Send();"   />
        
< mx:TextInput  borderColor ="#04010C"  backgroundColor ="#EEDBFC"  width ="516"  borderStyle ="inset"  cornerRadius ="20"  alpha ="1.0"  id ="txtSendContent"  left ="10"  top ="70" />
        
< mx:TextArea  borderColor ="#010A10"  id ="txtContent"  left ="10"  top ="110"  right ="10"  bottom ="10"  backgroundColor ="#DEEEF3"  cornerRadius ="12" />
    
</ mx:Panel >
    
</ mx:Application >

 

C# 

 

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Net;
using  System.Net.Sockets;
using  System.Threading;
namespace  Server
{
    
public partial class Form1 : Form
    
{
        
private bool ServiceStartFlag = false;
        
private Socket m_Socket;
        NetworkStream networkStream;
        Thread m_Thread;
        
public delegate void HelpHandler(string str);
        
public Form1()
        
{
            InitializeComponent();
            btnStart.Enabled 
= true;
            btnStop.Enabled 
= false;
        }


        
private void btnStart_Click(object sender, EventArgs e)
        
{
            
int Port = int.Parse(txtPort.Text);
            m_Socket 
= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress LocalServerIP 
= GetIPAddress();

            IPEndPoint LocalIPEndPoint 
= new IPEndPoint(LocalServerIP, Port);

            m_Socket.Bind(LocalIPEndPoint);
          
            m_Socket.Listen(
600);

            m_Thread 
= new Thread(new ThreadStart(AcceptClient));
            m_Thread.IsBackground 
= true;
            m_Thread.Start();

        }

        
private void AcceptClient()
        
{
            ServiceStartFlag 
= true;
           
            
while (ServiceStartFlag)
            
{
                
try
                
{
                    Socket newSocket 
= m_Socket.Accept();
                    
string onemessge = "<cross-domain-policy><allow-access-from domain=\"" + "*" + "\" to-ports=\"" + txtPort.Text + "\"/></cross-domain-policy>\0";

                    
byte[] tmpBytes = Encoding.UTF8.GetBytes(onemessge);
                    newSocket.Send(tmpBytes);

                    Thread newThread 
= new Thread(new ParameterizedThreadStart(ReadMsg));
                    newThread.IsBackground 
= true;
                    
object obj = newSocket;
                    newThread.Start(obj);
                }

                
catch (SocketException ex)
                
{



                }

            }

        }

        
        
private void ReadMsg(object obj)
        
{
            Socket socket 
= (Socket)obj;
            HelpHandler rHandler 
= new HelpHandler(ReceivedMsg);

            
byte[] byteMessage = null; ;
          
            
while (ServiceStartFlag)
            
{
                
try
                
{
                    
if (socket.Connected)
                    
{

                        byteMessage 
= new byte[1000];
                      
int len=  socket.Receive(byteMessage);
                      
if (len > 0)
                      
{
                          
string sTime = DateTime.Now.ToShortTimeString();

                          
string msg = sTime + ":" + "Message from:";

                          msg 
+= socket.RemoteEndPoint.ToString() + Encoding.UTF8.GetString(byteMessage);
                          BeginInvoke(rHandler, 
new object[] { msg });
                          byteMessage 
= null;

                          
byte[] tmpBytes = Encoding.UTF8.GetBytes("Sended Sucessed!\0");

                          socket.Send(tmpBytes);
                      }


                        
                    }

                }

                
catch (SocketException ex)
                
{

                    BeginInvoke(rHandler, 
new object[] { ex.ToString() });

                }

            }

        }

        
private void ReceivedMsg(string str)
        
{
            
this.listBox1.Items.Add(str);
        }

        
private void btnStop_Click(object sender, EventArgs e)
        
{

        }


        
private IPAddress GetIPAddress()
        
{
            IPHostEntry ieh 
= Dns.GetHostByName(Dns.GetHostName());

            
return ieh.AddressList[0];
        }

    }

}

你可能感兴趣的:(socket)