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();
        }
    }
  • 相关阅读:
    【BZOJ2384】[Ceoi2011]Match KMP
    【BZOJ2482】[Spoj1557] Can you answer these queries II 线段树
    【BZOJ2506】calc 分段+vector+莫队
    【BZOJ2600】[Ioi2011]ricehub 双指针法
    【BZOJ4898】[Apio2017]商旅 分数规划+SPFA
    【BZOJ4417】[Shoi2013]超级跳马 矩阵乘法
    【BZOJ2707】[SDOI2012]走迷宫 Tarjan+拓扑排序+高斯消元+期望
    【BZOJ2730】[HNOI2012]矿场搭建 Tarjan
    【BZOJ4987】Tree 树形DP
    【BZOJ3502/2288】PA2012 Tanie linie/【POJ Challenge】生日礼物 堆+链表(模拟费用流)
  • 原文地址:https://www.cnblogs.com/secbook/p/2655373.html
Copyright © 2011-2022 走看看