UnityTCP协议

不熟悉TCP/UDP协议的同学可以参考这篇文章:http://blog.csdn.net/li_ning_/article/details/52117463

话不多少说,服务器端代码如下:

using UnityEngine;
using System.Collections;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
using System;

public class TCPServer : MonoBehaviour {

    private TcpListener tcpListener = null;
    private TcpClient tcpClient = null;

    private Thread thread_tcpRecv = null;
    private bool isRunningThread = false;

    private Queue<string> queue_tcpMessages;

	// Use this for initialization
	void Start () {
        queue_tcpMessages = new Queue<string>();
        CreateTcpListen();
	}
	
	// Update is called once per frame
	void Update () {
        if (queue_tcpMessages.Count > 0)
        {
            string cmd = queue_tcpMessages.Dequeue();
            print(cmd);

            DoByCommand(cmd);
        }
	}

    void DoByCommand(string cmd)
    {
        switch (cmd)
        {
            case "TransPortPhoto": ReceivePhoto(); break;  //图片数据流的接收并显示
        }
    }

    void ReceivePhoto()
    {
        Debug.Log("DisPlay Photo");
    }

    void ReciveMessages()
    {
        while(isRunningThread)
        {
            try
            {
                tcpClient = tcpListener.AcceptTcpClient();
                byte[] buffer = new Byte[tcpClient.ReceiveBufferSize];
                NetworkStream dataStream = tcpClient.GetStream();
                dataStream.Read(buffer, 0, buffer.Length);

                queue_tcpMessages.Enqueue(System.Text.Encoding.Default.GetString(buffer).Trim('\0'));

                dataStream.Close();
                tcpClient.Close();
            }
            catch(System.Exception ex)
            {
                print(ex.Message);
                break;
            }
        }
    }

    void CreateTcpListen()
    {
        isRunningThread = true;

        tcpListener = new TcpListener(IPAddress.Parse(ConfiInfo.serverIP), ConfiInfo.TcpPort);
        tcpListener.Start();

        thread_tcpRecv = new Thread(ReciveMessages);
        thread_tcpRecv.Start();
    }

    void OnDisable()
    {
        isRunningThread = false;
        tcpListener.Stop();
    }
}

客户端代码如下:

using UnityEngine;
using System.Collections;
using System.Net;
using System.Net.Sockets;

public class TCPClient : MonoBehaviour {

    private TcpClient tcpClient = null;

	// Use this for initialization
	void Start () {
        CreateTcpClient();
	}
	
	// Update is called once per frame
	void Update () {
	
	}

    public void SendTcpMessages()
    {
        SendTcpStringMessage("TransPortPhoto");
    }

    void SendTcpStringMessage(string meg)   //发送字符串信息
    {
        byte[] sendData = System.Text.Encoding.Default.GetBytes(meg);
        tcpClient = new TcpClient();

        try
        {
            tcpClient.Connect(IPAddress.Parse(ConfiInfo.serverIP), ConfiInfo.TcpPort);
        }
        catch (System.Exception ex)
        {
            print(ex);
            //break;
        }

        NetworkStream dataStream = tcpClient.GetStream();
        dataStream.Write(sendData, 0, sendData.Length);

        dataStream.Close();
        tcpClient.Close();
    }

    void CreateTcpClient()
    {
        
    }

    void OnDestory()
    {

    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值