unity学习如何做服务器与客户端

首先要先建立两个VS(Micsoft Visual Studio)项目 一个放 sever脚步 一个放client脚本  

sever 脚本   

1.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;


using System.Net;
using System.Threading;


namespace SeverTest
{
    class SeverControl
    {
        private Socket severSocket;
        public SeverControl()
        {
            severSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);


        }
        public void Start()
        {
            severSocket.Bind(new IPEndPoint(IPAddress.Any,12321));
            severSocket.Listen(10);
            Console.WriteLine("服务器启动了");
            //接收客服端的方法会挂起当前线程


            Thread threadAccept = new Thread(Accept);
            threadAccept.IsBackground = true;
            threadAccept.Start();
        }
        public void Accept()
        {
            Socket client = severSocket.Accept();
            IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
            Console.WriteLine(point.Address + "【" + point.Port + "】连接成功");
            //byte[] msg = new byte[1024];
            //int msgLen = client.Receive(msg);
            //Console.WriteLine(Encoding.UTF8.GetString(msg,0,msgLen));
            Thread threadReceive = new Thread(Receive);
            threadReceive.IsBackground = true;
            threadReceive.Start(client);
            Accept();
        }
        public void Receive(Object obj)
        {
            Socket client = obj as Socket;
            IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
            try { 
            byte[] msg = new byte[1024];
            int msgLen = client.Receive(msg);
            Console.WriteLine(point.Address+"【"+point.Port+"】"+Encoding.UTF8.GetString(msg, 0, msgLen));
            client.Send(Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(msg,0,msgLen)+"楼上说得对"));
            Receive(client);
            } catch(Exception exp)
            {
                Console.WriteLine(point.Address + "【" + point.Port + "】"+"断开了");
            }
           Receive(client);
        }
    }
}


主程序类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace SeverTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SeverControl sever = new SeverControl();
            sever.Start();
            Console.Read();
        }
    }
}


client脚步:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Threading;


namespace ClientTest
{
    class ClientControl
    {
        private Socket clientSocket;
        public ClientControl()
        {
            clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);


        }
        public void Connect(string ip,int port)
        {
            clientSocket.Connect(ip,port);
            Console.WriteLine("链接服务器成功");
            Thread threadRecieve = new Thread(Recieve);
            threadRecieve.IsBackground = true;
            threadRecieve.Start();
        }
        private void Recieve()
        {
            try
            {
                byte[] msg = new byte[1024];
                int msgLen = clientSocket.Receive(msg);
                Console.WriteLine("服务器说:" + Encoding.UTF8.GetString(msg, 0, msgLen));
                Recieve();
            }
            catch
            {
                Console.WriteLine("服务器断开了");
            }
          
        }
        public void Send(string msg)
        {
            clientSocket.Send(Encoding.UTF8.GetBytes(msg));
        }
    }
}

主程序类:

namespace ClientTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ClientControl client = new ClientControl();
            client.Connect("127.0.0.1",12321);


            Console.WriteLine("请输入您要发送的内容,输入quit退出");
            string msg = Console.ReadLine();
            while (msg != "quit")
            {
                client.Send(msg);
                msg = Console.ReadLine();


            }
            Console.ReadKey();


        }
    }
}

记得 放好 就行 namespace空间名要改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值