久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

unity socket學習(二)

 3dC 2013-10-23
 

unity socket學習(二)

 425人閱讀 評論(0) 收藏 舉報

轉載于:圣典的unity csharp socket 異步通信 客戶端http://game./forum/read.php?tid=1478

 

  1. unity csharp socket 異步通信 客戶端  
  2. 作者:圍城(solq)  
  3. bolg:http://www.cnblogs.com/solq/  
  4. 服務端用java nio 測試過是可以的。,。,。。 ...  
  5.  demo : http://unitysgui.sinaapp.com/chat  
  6. using UnityEngine;  
  7. using System.Collections;  
  8. using System.Net.Sockets;  
  9. using System.Net;  
  10. using System;  
  11. using System.Text;  
  12. using System.Threading;  
  13.    
  14. public class TestAsyncSocketClient2 : MonoBehaviour  
  15. {  
  16.     private Socket client = null;  
  17.     private string ip = "127.0.0.1";  
  18.     private int port = 8989;  
  19.    
  20.     private int size = 1024;  
  21.     private byte[] readData = new byte[1024];  
  22.     private byte[] data = new byte[1024];  
  23.     void Start()                        
  24.     {  
  25.         //  socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 多socket 復用同一端口  
  26.         client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  
  27.         IPEndPoint address = new IPEndPoint(IPAddress.Parse(ip), port);  
  28.         //client.Blocking = false;  
  29.         client.BeginConnect(address, new AsyncCallback(Connected), null); //建立異步連接服務 , Connected 進行監(jiān)聽  
  30.         //connectDone.WaitOne();  
  31.     }  
  32.     void Connected(IAsyncResult iar)    //建立連接  
  33.     {  
  34.        //Socket client = (Socket)iar.AsyncState;  
  35.        client.EndConnect(iar);  
  36.         //client.BeginReceive(data, 0, size, SocketFlags.None, new AsyncCallback(ReceiveData), client);  
  37.         echo("建立連接");  
  38.    
  39.     }  
  40.     void Send(string str)  
  41.     {  
  42.         byte[] msg = Encoding.UTF8.GetBytes(str);  
  43.         client.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(SendData), client);    //開始發(fā)送  
  44.     }  
  45.     void SendData(IAsyncResult iar) //發(fā)送數(shù)據(jù)  
  46.     {  
  47.         Socket remote = (Socket)iar.AsyncState;  
  48.         int sent = remote.EndSend(iar);         //關閉發(fā)送  
  49.         remote.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ReceiveData), remote);   //開始接收  
  50.     }  
  51.    
  52.    
  53.    
  54.     void Update()  
  55.     {  
  56.         startReceive(); //這步很重要,,,,,不然會收不到服務器發(fā)過來的消息  
  57.     }  
  58.     bool ReceiveFlag = true;  
  59.     void startReceive()  
  60.     {  
  61.         if (ReceiveFlag) {  
  62.             ReceiveFlag = false;  
  63.             client.BeginReceive(readData, 0, readData.Length, SocketFlags.None, new AsyncCallback(endReceive), client);  
  64.         }             
  65.     }  
  66.    
  67.     void endReceive(IAsyncResult iar) //接收數(shù)據(jù)  
  68.     {  
  69.         ReceiveFlag = true;  
  70.         Socket remote = (Socket)iar.AsyncState;  
  71.         int recv = remote.EndReceive(iar);  
  72.         if (recv > 0)  
  73.         {  
  74.             string stringData = Encoding.UTF8.GetString(readData, 0, recv);  
  75.             text2 += "\n" + "接收服務器數(shù)據(jù):+++++++++++++++" + stringData;  
  76.         }  
  77.    
  78.     }  
  79.     void ReceiveData(IAsyncResult iar) //接收數(shù)據(jù)  
  80.     {  
  81.         Socket remote = (Socket)iar.AsyncState;  
  82.         int recv = remote.EndReceive(iar);          //關閉接收 注意:如果關閉了接收,,就不能接收了 測試是這樣  
  83.    
  84.         string stringData = Encoding.UTF8.GetString(data, 0, recv);  
  85.         text2 += "\n" + "回收發(fā)送數(shù)據(jù):+++++++++++++++" + stringData;  
  86.    
  87.     }  
  88.    
  89.    
  90.     void CloseSocket()                  //關閉socket  
  91.     {  
  92.         if (client.Connected)  
  93.         {  
  94.             echo("關閉socket");  
  95.             client.Close();  
  96.         }              
  97.     }  
  98.     void OnApplicationQuit()  
  99.     {  
  100.         CloseSocket();  
  101.     }  
  102.    
  103.     void echo(object msg)  
  104.     {  
  105.         Debug.Log(msg);  
  106.     }  
  107.    
  108.     string text = "";  
  109.     string text2 = "";  
  110.     Vector2 p = new Vector2(600, 300);  
  111.     void OnGUI()  
  112.     {  
  113.         GUILayout.BeginVertical(GUILayout.Width(500) );  
  114.             text = GUILayout.TextField(text);  
  115.             if (GUILayout.Button("發(fā)送數(shù)據(jù)"))  
  116.             {  
  117.                 Send(text);  
  118.             }  
  119.             GUILayout.BeginScrollView(p);  
  120.             text2 = GUILayout.TextArea(text2, GUILayout.Height(300));  
  121.             GUILayout.EndScrollView();  
  122.         GUILayout.EndVertical();  
  123.    
  124.     }  
  125.    
  126. }  

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多