- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity3d戏开发之实现基于Socket通讯的公共聊天室
由于这段时间比较忙,所以也很久没发布过新的教程,这几天刚好要为一个项目写服务端程序,所以顺便也在Unity3d里面实现了一个简单的客户端,多个客户端一同使用就是一个简单的公共聊天室了。服务端为一个控制台程序使用C#实现,当然,在Unity3d中也相应地使用了C#语言实现客户端,服务端和客户端能实现消息的互通,当服务端接收到某客户端发送过来的消息时将会对客户端列表成员进行广播,这是公共聊天室的最基本的形式。Socket通讯是网络游戏最为基础的知识,因此这个实例能向有志投身于网游行业的初学者提供指导意义。?这篇文章来自狗刨学习网Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
namespace TestServer
{
? ? class Program
? ? {
? ?? ???// 设置连接端口
? ?? ???const int portNo = 500;
? ?? ???static void Main(string[] args)
? ?? ???{
? ?? ?? ?? ?// 初始化服务器IP
? ?? ?? ?? ?System.Net.IPAddress localAdd = System.Net.IPAddress.Parse();
? ?? ?? ?? ?// 创建TCP侦听器
? ?? ?? ?? ?TcpListener listener = new TcpListener(localAdd, portNo);
? ?? ?? ?? ?listener.Start();
? ?? ?? ?? ?// 显示服务器启动信息
? ?? ?? ?? ?Console.WriteLine(Server is starting...\n);
? ?? ?? ?? ?// 循环接受客户端的连接请求
? ?? ?? ?? ?while (true)
? ?? ?? ?? ?{
? ?? ?? ?? ?? ? ChatClient user = new ChatClient(listener.AcceptTcpClient());
? ?? ?? ?? ?? ? // 显示连接客户端的IP与端口
? ?? ?? ?? ?? ? Console.WriteLine(user._clientIP + is joined...\n);
? ?? ?? ?? ?}
? ?? ???}
? ? }
}
复制代码
ChatClient.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Net.Sockets;
namespace TestServer
{
? ? class ChatClient
? ? {
? ?? ???public static Hashtable ALLClients = new Hashtable(); // 客户列表
? ?? ???private TcpClient _client;??// 客户端实体
? ?? ???public??string _clientIP;? ?// 客户端IP
? ?? ???private string _clientNick; // 客户端昵称
? ?? ???private byte[] data;? ?? ???// 消息数据
? ?? ???private bool ReceiveNick = true;
? ?? ???public ChatClient(TcpClient client)
? ?? ???{
? ?? ?? ?? ?this._client = client;
? ?? ?? ?? ?this._clientIP = client.Client.RemoteEndPoint.ToString();
? ?? ?? ?? ?// 把当前客户端实例添加到客户列表当中
? ?? ?? ?? ?ALLClients.Add(this._clientIP, this);
? ?? ?? ?? ?data = new byte[this._client.ReceiveBufferSize];
? ?? ?? ?? ?// 从服务端获取消息
? ?? ?? ?? ?client.Get
文档评论(0)