其他分享
首页 > 其他分享> > 网络游戏基础知识

网络游戏基础知识

作者:互联网

1、多个玩家如何进行网络通信 ?

每个玩家都是在客户端,如果需要相互之间进行通信,需要通过一个很大的服务器进行消息传递;

 

那么玩家和服务器怎么进行通信,用什么进行通信?

一个玩家肯定有一台计算机,而计算就应该有自己的IP地址,假如一个程序qq想要和另一台计算机的qq通信应该怎么办?

首先在计算机两端都应该建立Socket,其实看似是两个程序之间的通信,其实就是两个Socket之间的通信,一个用于发送消息,而另一个用于接收消息;

那么为什么一个Socket和另一个Socket之间可通信呢? 其实只要知道两个计算机的IP地址和彼此之间的端口号就可以实现,说到底,他们之间实现通信,

就是因为端口号和端口号之间的通信。

 

就比如一台计算机上有qq和微信两个应用程序,甚至可以安装更多的程序,但是一台计算机只有一个IP地址,那么他们之间并不会产生冲突,如何实现?

就是他们一定选择了不同的端口号进行信息的传递,就这么简单。

 

2、在Unity当中实现信息传递的一个简单实例

 

--------------------------------------客户端--------------------------------------------------

我们假设Unity编写出来的程序位客户端,如何写一个客户端程序?

客户端应该要完成3件事

1)能够连接到服务器,应该有一个连接按钮;

2)能够向服务器发送消息,就应该有一个输入消息框和一个发送按钮;

3)能够接收服务器发来的消息,有一个接收框。

 

接下来就需要写脚本实现上面的功能

1、写连接方法,然后注册到连接按钮上,也就是注册事件;

2、写发送方法,然后注册到发送按钮上;

完整代码:

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

public class Echo : MonoBehaviour
{
    //定义套接字
    Socket socket;

    //定义UGUI
    public InputField inputField;
    public Text text;

    // 点击连接按钮
    public void Connection()
    {
        //Socket
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        //Connect
        socket.Connect("127.0.0.1", 8888);
    }

    // 点击发送按钮
    public void Send()
    {
        //Send 
        string sendStr = inputField.text;
        byte[] sendBytes = System.Text.Encoding.Default.GetBytes(sendStr);
        socket.Send(sendBytes);

        //Receive
        byte[] readBuff = new byte[1024];
        int count = socket.Receive(readBuff);
       string recvStr = System.Text.Encoding.Default.GetString(readBuff, 0, count);
        text.text = recvStr;

        //Close
        socket.Close();
    }
}

 

 

------------------------------------------------------服务器----------------------------------------------------------

 

标签:System,socket,通信,基础知识,网络游戏,using,public,Socket
来源: https://www.cnblogs.com/Optimism/p/12245417.html