本小白刚接触到socket编程这一块,模仿着写了一个多人在线聊天室,也算是对这个模块有了初步认识吧,写这篇博客一来是在日后能够再温习一下,二来是想给更多小白一个参考学习的详细案例,三来也是对自己学习过程的一个笔记总结吧!好了,话不多说,直接上成果!
演示视频
unity制作聊天室成果展示视频
工具
- Visual Studio 2017
- Unity 2017
- NGUI插件
1.服务器端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace TCP_Unity_Server
{
class Program
{
//用于存储接收到的每一个 与客户端交互对象
static List<Client> clientList = new List<Client>();
//将一个客户端发出到服务器的消息,发送给所有的客户端(包括他自己)
public static void BroadcastMessage(string message)//message就是服务器接收到的消息
{
var notConnectedList = new List<Client>();//存放所有断开连接的
foreach (var client in clientList)//遍历之前所有连接成功的 与客户端交互对象
{
//判断 与客户端交互对象 是否与服务断开连接
if (client.Connected)//处于连接状态
{
client.SendMessage(message);//与客户端交互对象 向该客户端发送该消息
}
else//处于断开状态
{
notConnectedList.Add(client);//断开了,就不需要向其发送消息了
}
}
foreach (var temp in notConnectedList)//将断开的 与客户端交互对象删掉
{
clientList.Remove(temp);
}
}
static void Main(string[] args)
{
//1.创建sicket
Socket tcpServer = new Socket(Ad