zoukankan      html  css  js  c++  java
  • c#的udp通讯代码

    //Author:smilelance

    //From:http://blog.csdn.net/smilelance


    using UnityEngine;

    using System.Collections;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System;


    public class UdpConnection {
    private static UdpConnection instance;
    private const System.Int32 serverPort = 8320;
    private const string serverAddress = "10.1.13.157";
    UdpClient udpClient;

        private UdpConnection()
    {
        
        }


        public static UdpConnection GetInstance()
        {
          if(instance==null){
            instance=new UdpConnection();
            }
            return instance;
        }

    public void startUdpConnection(){
    udpClient = new UdpClient();
            udpClient.Connect(serverAddress, serverPort);

    //IPEndPoint object will allow us to read datagrams sent from any source.
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);


             // Sends a message to the host to which you have connected.
             byte[] sendBytes = Encoding.UTF8.GetBytes("Client start online?");
    // AsyncSend(sendBytes);
             //udpClient.Send(sendBytes, sendBytes.Length);
     
    AsyncReceive();
    }

    // 发送数据 
    public void AsyncSend(byte[] data){
            if (data.Length > 0){
    // Debug.Log("sending : " + Encoding.UTF8.GetString(data));
               //udpClient.Send(data, data.Length, ipep);
    udpClient.BeginSend(data, data.Length, new AsyncCallback(SendDataCallback), null);
    }
    }

    //接收数据
    public void AsyncReceive(){
            udpClient.BeginReceive(new AsyncCallback(ReceiveDataCallback), null);
    }

    //发送数据callback
    public static bool messageSent = false;

    private void SendDataCallback(IAsyncResult ar)
    {
      //UdpClient u = (UdpClient)ar.AsyncState;
    //print(u.EndSend(ar));
    //u.EndSend(ar);
    // Debug.Log("sending successfule");
      messageSent = true;
    }



        //接收数据callback
        private void ReceiveDataCallback(IAsyncResult ar)
        {
            IPEndPoint ipep = (IPEndPoint)ar.AsyncState;
            byte[] data = udpClient.EndReceive(ar, ref ipep);
            if (data.Length != 0){
    //            OnReceiveData(new UdpSimpleEventArgs(ipep, data));
    // string returnData = Encoding.UTF8.GetString(data);
    // Debug.Log("recv data: " + returnData);
    MessageReceiver.GetInstance().parseReseiveMsg(data);
    }
            //继续从远程主机接收数据报
            AsyncReceive();
        }
    }
  • 相关阅读:
    MAC OSX 下 使用openssl 命令 生成RSA公钥和私钥
    iOS 高效开发-----延时执行用GCD
    iOS 高效开发-----实现description 方法 (续)
    iOS 高效开发-----实现description 方法
    ios 高效开发-----字面量
    利用脚本打包的动态库 在打包发布时出现得问题解析 ERROR ITMS-90362等
    打包framework 涉及到得架构问题
    XCode 6 制作framework
    【Mac软件推荐】终端常用者的萌物Go2Shell
    项目总结吧
  • 原文地址:https://www.cnblogs.com/secbook/p/2655373.html
Copyright © 2011-2022 走看看