unity3d实现Socket

首先创建一个服务器

using UnityEngine;
using System.Collections;
using System.Net.Sockets;
using System.Net;
using System.Threading; //引入线程的包

public class ServerSocket : MonoBehaviour 
{
    private Socket serverSocket;
    void Start()
    {
        //1使用socket创建一个对象
        serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
        //2创建一个IpEndPoint对象(加入Ip地址)
        IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2333);
        serverSocket.Bind(endPoint);
        serverSocket.Listen(10); //3设置缓冲区的大小, 进行监听

        ThreadStart s = new ThreadStart(X);  //创建一个线程
        Thread t = new Thread(s);
        t.Start();
    }
    void Update ()
    {
    }

    private void X()
    {
        //4使用Accept()方法
        Socket clientSocket = serverSocket.Accept();
        //5接收使用Receive()方法接受客户端消息
        byte[] receiveBuffer = new byte[1024]; //缓存的大小
        int count = clientSocket.Receive(receiveBuffer);
        string receiveStr = System.Text.Encoding.UTF8.GetString(receiveBuffer); //把byte转化为字符串
        print(receiveStr);

        //6发送数据
        string str = "老王你好";
        byte[] sendBuffer = new byte[1024];
        sendBuffer = System.Text.Encoding.UTF8.GetBytes(str);
        clientSocket.Send(sendBuffer);
        clientSocket.Close();
    }

}


在家建立一个客户端

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


public class ClientSocket : MonoBehaviour 
{
    private Socket clientSocket;
    void Start ()
    {
    }
    void Update ()
    {
        if(Input.GetKeyDown(KeyCode.P)) //按下P键,连接服务器
        {       //1.创建客户端(Socket)
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //    2.    使用 Connect() 方法连接服务器
            clientSocket.Connect("127.0.0.1", 2333);

            string str = "你好, 我是老王!";
            byte[] sendBuffer = System.Text.Encoding.UTF8.GetBytes(str);
            //    3.    使用 Send() 方法向客户端发送消息
            clientSocket.Send(sendBuffer);

            ThreadStart s = new ThreadStart(X);
            Thread t = new Thread(s);
            t.Start();
           
        }
    }

    private void X()
    {
        byte[] receiveBuffer = new byte[1024];
        //    4.    使用 Receive() 方法接收客户端消息
        clientSocket.Receive(receiveBuffer);
        string receiveStr = System.Text.Encoding.UTF8.GetString(receiveBuffer);
        print(receiveStr);

        //    5.    使用 Close() 方法断开连接
        clientSocket.Close();
    }
}

 

 

 

posted @ 2015-11-16 21:23  狂奔的老鳖  阅读(971)  评论(0编辑  收藏  举报