• 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];
            }

        }

    }
  • 相关阅读:
    聚合查询2.0
    分词器2.0
    搜索和查询2.0
    Mapping2.0
    索引的CRUD2.0
    微信小程序:一则iOS下用video播放mp4文件问题排查
    flutter——android报错Manifest merger failed : Attribute application@allowBackup value=(false)
    HTML-meta
    HTML-实体
    html-vscode-liveServer
  • 原文地址:https://www.cnblogs.com/skyblue/p/1523507.html
Copyright © 2020-2023  润新知