客户端用Unity开发,主要就是搭建一下聊天室的UI界面:输入框,聊天内容显示框,发送按钮

灰色背景的就是Message,也就是聊天内容的显示框,是一个Text类型,这里创建UI方面就不多讲了

在Canvas下挂一个ChatManager脚本

using System;

using UnityEngine;

using System.Net.Sockets;

using System.Net;

using UnityEngine.UI;

using System.Text;

public class ChatManager : MonoBehaviour {

private Socket clientSocket;

private Button btn;

private InputField inputField;

private Text showMessage;

private byte[] data = new byte[1024];

private string msg = "";

void Start()

{

//创建一个socket,绑定和服务器一样的ip和端口号,然后执行Connect就可以连接上服务器了(服务器已经运行)

clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6688));

btn = transform.Find("Button").GetComponent();

btn.onClick.AddListener(OnSendClick);

inputField = transform.Find("InputField").GetComponent();

showMessage = transform.Find("BG/Message").GetComponent();

ClientStart();

}

void Update()

{

if(msg!=null && msg != "")

{

showMessage.text += msg+"\n";回调函数不能调用Unity的组件、UI;所以只能在Update里用,而不能直接在ReceiveCallBack(回调函数不属于Unity的主线程)

msg = "";

}

}

private void OnSendClick()  //绑定到发送按钮的方法

{

if (inputField.text != "")

{

byte[] databytes = Encoding.UTF8.GetBytes(inputField.text);

clientSocket.Send(databytes);

inputField.text = "";

}

}

private void ClientStart()  //开始接收从服务器发来的消息

{

clientSocket.BeginReceive(data, 0, 1024,SocketFlags.None, ReceiveCallBack, null);

}

private void ReceiveCallBack(IAsyncResult ar)

{

try

{

if (clientSocket.Connected == false)

{

clientSocket.Close();

return;

}

int len = clientSocket.EndReceive(ar);

string message = Encoding.UTF8.GetString(data, 0, len);

msg = message;

ClientStart();  //重复接收从服务器发来的信息

}

catch(Exception e)

{

Debug.Log("ReceiveCallBack:" + e);

}

}

void OnDestroy()

{

clientSocket.Close();

}

}

tcp unity 图片_Unity 简易聊天室(基于TCP)(2)相关推荐

  1. Python实现群聊天室(基于TCP)

    一.服务端代码: 1. 需要socket,threading 这两个模块 2.使用单进程多线程实现: 1)多个客户端同时在线群聊 2)新客户端上线广播通知其他在线客户端 3)在线客户端下线广播通知其他 ...

  2. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...

  3. ajax无刷新聊天室,实现一个无刷新的基于ajax的简易聊天室

    实现一个基于ajax的简易聊天室 1 程序主页面 在线交流对话 include_once("server1.server.php"); #servidor para XAJAX $ ...

  4. 连夜撸了一个简易聊天室

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 分不清轮询.长轮询?不知道什么时候该用websocket还 ...

  5. 撸一个简易聊天室,不信你学不会实时消息推送(附源码)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 分不清轮询.长轮询? ...

  6. Java WebSocket编程与网页简易聊天室

    在webSocket还未引入前,许多开发人员通过各种非正规手段来完成更新网站的最新信息和到所有当前访问者的任务,其中一种手段就是通过浏览器向服务器轮询更新,但这种手段的网络延迟比较明显,其用户体验比较 ...

  7. Go实现简易聊天室(群聊)

    参考:Go 群聊 ( goroutine ) · 语雀 基于websocket的聊天室,可进一步参考: (1) go实现聊天室(WebSocket方式) (2) Golang代码搜集-基于websoc ...

  8. 2020暑假集训项目——Java简易聊天室

    经过一周的学习与搬砖,我成功的完成了暑假集训的第一个项目--Java简易聊天室,这里对整个项目做一个总结.(文末附下载地址) 本项目支持的功能: 1.可同时开启多个客户端进行多人聊天: 2.可与在线的 ...

  9. 第三章、C#简单界面在线聊天室C#一对多聊天(使用TCP转发实现的在线聊天室,文章末尾附免费项目资源)

    C#网络通信系列学习笔记 第一章.C#最简单的控制台网络通信&C#最简单的控制台socket通信 第二章.C#控制台实现一对一聊天&C#socket类的简单封装 第三章.C#简单在线聊 ...

最新文章

  1. Web项目中文件上传Filter处理
  2. python基础入门:while 循环
  3. Lunar New Year and Cross Counting
  4. createprocess 系统找不到指定的文件_windows找不到gpedit.msc请确定文件名
  5. java web应用开发_Java Web应用开发基础
  6. 计算机网络期末总结复习(全)
  7. RxJava2+retrofit实现网络封装
  8. 创建线程-学到了4种方法
  9. 【PIL处理图片】小技巧之画虚线、加粗字体、长文本自动分行(符号处理)
  10. 完美解决,用Linux打开和编辑doc文档~
  11. 中华名将索引 - 第一批:廉颇
  12. 判断浏览器版本是否ie8,ie9,ie10,ie11并提示升级
  13. Win10开始菜单打不开怎么办?
  14. 因执迷而绽放,终登聆听贡献者荣誉榜
  15. ibverbs文档翻译
  16. 外企人常使用的工作邮箱,建议收藏!
  17. 人人网陈一舟:创业18年,我领悟的五点心得
  18. 最健脾养胃的8种食物
  19. 大数据杀熟 算法_大数据杀熟如何防范?
  20. Html .CSS JQUERY (magnifier)实现详情页面特效

热门文章

  1. Binary XML file line #2: You must supply a layout_height attribute inflate
  2. c/c++如何获取数组的长度
  3. 书店POS机--细化迭代2--测试
  4. CheckBox as Image use button
  5. 统计在从1到n的正整数中1出现的次数
  6. MyBatis 数据持久层
  7. 圣三一学院计算机专业,360教育集团:爱尔兰都柏林大学圣三一学院计算机专业...
  8. magic square java_测试Magic Square Java的.txt文件
  9. 计算机机房管理具体工作和职责,机房管理
  10. 数字图像处理图像反转的实现_反转8位数字| 8085微处理器