開發環境
Window7
Unity3D 3.4.1
VS2010
MB525defy Android 2.2.1
這次帶來的是Unity中C#網絡通信和下載保存,都是很有實用價值的代碼,希望大家喜歡=。= 再免費送上最近做的測試效果圖,公司美術一直很給力,程序與美術之間都在共同進步,這次貼圖測試效果出來了-0- 以後有機會就給大家分享下材質和Shader方面的學習經驗。
本文工程地址下載地址:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /pub/2011/10/25/Unity中C#網絡通信和下載保存/
本次學習:
1. 簡單的C#通信測試
2. 下載和本地保存實例
1. 簡單的C#通信測試
首先是與服務器端通信測試,這裡羽化和明哥商量的是用C#,因為我們都是Java出生,服務器部分就交給了明哥,羽化這裡只是截取了主要實現的小部分代碼,所以只能拿來參考,並不能用於實戰,明哥最近又在忙什麼多線程通信,線程鎖之內的高深問題-0- 這是羽化寫的客戶端實現,只能一次通信,服務器可以多次接受,下面是服務器的截圖,在VS2010中運行截圖:
代碼放在了下面的工程文件中,這裡主要學習Unity中的客戶端。總共分成3步:連接-發送-接受,簡單的3步,這裡的“192.168.0.154”是羽化本機的IP地址,大家要測試時不要忘了更改,再者若沒打開服務器就運行本工程,就會停頓一定時間,在報錯開始運行,原因是羽化沒開多線程- -
CtoS.cs
- using UnityEngine;
- using System.Collections;
- using System.ComponentModel ;
- using System;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
-
- public class CtoS : MonoBehaviour
- {
- public string SendM= "-(00)-";
- public string server = "192.168.0.154";
- private Socket socket;
- public GUIText Test;
-
- void Start ()
- {
- try
- {
- /*Connect*/
- socket = new Socket ( AddressFamily.InterNetwork , SocketType.Stream , ProtocolType.Tcp);
- IPEndPoint tempRemoteIP = new IPEndPoint (IPAddress.Parse(server), 11000);
- EndPoint epTemp = (EndPoint)tempRemoteIP;
- socket.Connect(epTemp);
- print("Success Connect");
-
- /*Send*/
- Byte[] bytesSent = Encoding.ASCII.GetBytes(SendM);
- socket.Send(bytesSent,bytesSent.Length,0);
-
- /*Received*/
- Byte[] bytesReceived = new Byte[256];
- int bytes = 0;
- string page = "Server: Success Connect " + server + ":\r\n";
- do
- {
- bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0);
- page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
- }
- while (bytes > 0);
- Test.text = page;
-
- }
- catch (Exception e)
- {
- print(e);
- }
- }
- }
服務器打開的話客戶端收到返回信息(和發送一樣)運行效果如下圖: