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();
    }
}

 
时间: 2024-10-11 01:47:50

unity3d实现Socket的相关文章

Unity3d C# Socket 下载文件 (同步到)

续篇 Unity3d C# HttpWebRequest 异步下载文件 ,由于project编译为IL2CPP的情况下仍然无效.提示HttpWebrequest 在当前版本号不支持.所以还是寻求其他的办法. 正好分公司的同事也碰到了下载文件的BUG,可是他们是仅仅可下面载一部分,好歹也比我的情况好,于是借同事的參考咯. 结构大致是用Socket 向server发送Http请求.再设置各种Http头,然后接收server发来的数据流. 先了解下Http头: 典型的请求消息: GET http://

Unity3d C# Socket 下载文件 (同步向)

接上篇 Unity3d C# HttpWebRequest 异步下载文件 ,因为在将工程编译为IL2CPP的情况下仍然无效,提示HttpWebrequest 在当前版本不支持,所以还是寻求其它的办法. 正好分公司的同事也碰到了下载文件的BUG,但是他们是只能够下载一部分,好歹也比我的情况好,于是借同事的参考咯. 结构大致是用Socket 向服务器发送Http请求,再设置各种Http头,然后接收服务器发来的数据流. 先了解下Http头: 典型的请求消息: GET http://download.m

Unity3D 使用Socket处理数据并将数据 在UGUI、NGUI上显示出来

Unity3d 不支持C#的线程直接调用Unity3D 主线程才能实现的功能.例如:给UGUI text 赋值.改变Color值等.怎样解决这个问题呢?使用一个Loom脚本. 按照惯例贴上代码. 首先Loom脚本 using UnityEngine;using System.Collections;using System.Collections.Generic;using System;using System.Threading;using System.Linq; public class

Unity3d 封装Socket创建简单网络

北京又在打雷下大雨了,学习Unity以来,越来越感兴趣,情不自禁的想要学习更多知识 这次自己搭建一个Socket模块,比较基础,适合新手学习,详细介绍Socket的搭建过程,同样会把详细过程在代码里进行注释~ 在搭建Socket过程中,需要创建以下几个常用的方法: 1.创建套接字(socket) 2.绑定Ip和端口 3.监听方法 4.接收客户端请求的方法 5.收发消息的方法 创建SocketManger管理类 把客户端与服务端代码都写在新建的SocketManger里,并把SocketMange

unity3D中Socket链接与服务之间的通讯测试程序

Client.js: 1 var net=require('net'); 2 var client=net.connect({port:8124,host:'127.0.0.1'},function(){ 3     console.log('Success'); 4     client.write('world'); 5 6 }); 7 //客户端接收数据 8 client.on('data',function(data){ 9     console.log(data.toString()

GJM: Unity3D基于Socket通讯例子 [转载]

首先创建一个C# 控制台应用程序, 直接服务器端代码丢进去,然后再到Unity 里面建立一个工程,把客户端代码挂到相机上,运行服务端,再运行客户端. 高手勿喷!~! 完全源码已经奉上,大家开始研究吧!! 嘎嘎嘎! 服务端代码:Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; namespace Soke

unity3D中使用Socket进行数据通信(二)

上一篇博客主要介绍了使用socket搭建服务端和client程序,这一篇来说说socket的数据传输,我们使用socket的目的是解决点对点之间的数据传输,之前提到了socket中一个重要的概念:port.而socket数据传输的方式就是port与port之间以流(stream)的方式数据传输,socket命名空间中提供了该流的一个功能类(NetworkStream),用起来非常方便,由于不论什么能够转换为二进制的数据都能够保存到流中,所以能够再client与server之前传输不论什么形式的数

Unity3d在线游戏Socket通讯

网络游戏是一个人的互动娱乐软件应用.因为它是交互式,当然,需要了解对方的通信.这需要通信Socket:我们今天要实现的主角即套接字.Socket的英文原义是"孔"或"插座".正如其英文原意那样.象一个多孔插座. 一台电脑机器宛如布满各种插座的房间,每一个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电.有的则提供有线电视节目. 客户软件将插头插到不同编号的插座,就能够得到不同的服务.以下我们来看看下图,游戏中玩家移动是怎样通讯: 以下是Unity

Unity3d 游戏与C#服务器 异步Socket 交互 (一)

Unity3d中提供了Socket供开发者使用,语法和.net中的一致. 一般来说,对于手游客户端,分为两个线程,一个是GLES渲染,另一个就是Socket线程了. 文章转自(http://blog.csdn.net/huutu) 不论是服务器,还是客户端.其间的数据包的接收与发送,都是通过Socket. 比如客户端要登录,我们就新建一个Socket,Connect到帐号服务器.帐号服务器一直在等待客户端的连接,客户端连接进来之后就准备发送接收数据包了. 文章转自(http://blog.csd