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

客户端用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();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android底部弹出显示不全,Android 解决 NestedScrollView 底部内容被遮挡显示不全

Android 解决 NestedScrollView 底部内容被遮挡显示不全很早之前就遇到过在使用 NestedScrollView 的时候发现底部的 View 总是显示不全, 看起来像是被底部的什 padding 遮挡了一样.这次是一个 recycleView, 在 list 没有数据的时候总是显示不全, 有数据的时候就正常了. 子类控…

php调用python绘图程序_如何在matlab中调用python程序

现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令,然后再通过…

解释器android,Android的设计模式-解释器模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。2.介绍解释器模式属于行为型模式。解释器模…

下载人脸认证助手_关于微信人脸解封验证失败方法

微信解封人脸验证失败!我知道大家出现了这个问题。嗯,我也是前两天出现过的,前两天我一觉起来打开微信,发现自己的微信被封了。然后我就很着急的去解封。然后他就是让绑银行卡,然后进行实名认证之后进行人脸解封&#…

android照片如何查看时间,Android 获取照片时间

1、手机拍摄的照片(ExifInterface )ExifInterface exifInterface null;try {exifInterface new ExifInterface(oldPath);} catch (Exception e) {e.printStackTrace();}String watermarkTime exifInterface.getAttribute(ExifInterface.TAG_DATETIME);//ExifInterface方法只…

罗宾斯管理学13版pdf_全球著名管理学家,曾任五大高校教授,罗宾斯教你如何做好管理者...

在管理界,除了德鲁克能被称之为管理学大师,还有一位满腹经纶的管理学家,他就是斯蒂芬P罗宾斯,这位全球著名的管理学家,曾先后在布拉斯加大学、协和大学、巴尔的摩大学、南伊利诺伊大学、圣迭戈大学五大高校任教&#x…

android打开系统前置摄像头驱动,android 调用系统前置摄像头

第一种方式是采用MediaStore,调用系统原生的相机。Intent intent new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra("camerasensortype", 2); // 调用前置摄像头intent.putExtra("autofocus", true); // 自动对焦intent.putExtra…

img标签默认有外边距吗_你知道css的盒模型吗?

CSS盒子模型与怪异盒模型 盒子模型(Box Modle)可以用来对元素进行布局,包括内边距(padding),边框(border),外边距(margin),和实际内容(content)这几个部分。标准盒模型 标准盒模型中盒子的大小是指:content border p…

js html 转换为富文本,如何将富文本得到的html转换为pdf?

问题描述我想将kindtor最后得到的html转换为pdf,有一种思路是将获得的html通过dom-to-image或者html2canvas转换为图片。在转换为pdf,但是我获得到html之后,运用dom-to-image转换或者html都不行,会报错出来。问题出现的环境背景及…

rust雪山矿洞几个入口_梅里雪山内转全记录(雨崩徒步:神湖神瀑冰湖)

头一次徒步完还愿意记录一下,两个原因吧:1)出发前搜雨崩攻略,各大网站都很少有详细且完整的回答,2)朋友圈发图后,好多朋友对雨崩有兴趣求攻略。先把此次行程大概列一下,如果还有兴趣…

微型计算机上的南桥芯片功能,微型计算机及接口技术2012年1月真题试题(04732)...

微型计算机及接口技术2012年1月真题试题及答案解析(04732)微型计算机及接口技术2012年1月真题试题及答案解析(04732),本试卷总分100分。一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的…

空值用前值填充_用Excel进行数据处理

Excel是一款常用的办公软件,它的功能强大,本文我们将学习如何使用Excel 2019进行数据处理。导入数据本文使用的数据来自This Week’s Garbage Data File.xlsx。数据格式如上所示:表示销售日期表示销售人员名称和ID表示销售区域表示总计为了对…

2014年计算机初级应用考试是,2014年国硕士研究生入学统一考试计算机基础试题...

请回答下列问题。(1) 本题中的网络可抽象为数据结构中的哪种逻辑结构?(2) 针对题42表中的内容,设计合理的链式存储结构,以保存题42表中的链路状态信息(LSI)。要求给出链式存储结构的数据类型定义,并画出对应题42表的链式存储结构示意图(示意…

已知三个用不同数制表示的整数_数学一轮复习26,数列的概念及简单表示法,常用方法及具体策略...

【考试要求】1.了解数列的概念和几种简单的表示方法(列表、图象、通项公式);2.了解数列是自变量为正整数的一类特殊函数.【知识梳理】1.数列的定义按照一定顺序排列着的一列数称为数列,数列中的每一个数叫做这个数列的项.2.数列的分类3.数列的表示法数列…

html播放mp4不显示画面,浏览器播放mp4格式视频时只有声音看不到画面的原因及解决方法(精)...

做HTML5网页,要播放视频,视频格式为mp4,结果浏览器只能听到声音,看不到画面。反复测试,多个浏览器均出现此问题。刚开始以为视频的格式不对,我是从MOV转的MP4格式,反复确认嵌入的视频确实是mp4格…

4j 禁止类输出日志_logback 日志详细讲解

Logback介绍Logback是一个开源日志组件,logback被分为3个组件,logback-core,logback-classic和logback-access.Logback是具体的日志框架,它要与slf4j结合起来使用。Slf4j:简单日志门面,不是具体的日志解决方案&#xf…

计算机桌面桌面设置动态视频,电脑壁纸 篇一:电脑设置动态视频桌面图文教程...

电脑壁纸 篇一:电脑设置动态视频桌面图文教程2019-04-01 11:45:213点赞8收藏0评论今天闲来无事,来张大妈也好久了,没什么技术感觉发文太难了,试着来一篇看看能不能过!相信还有大多数值友的电脑桌面都是一张静态的图片壁…

e300氛围灯哪里调节_让快乐来得更简单!体验新宝骏E300/E300 PLUS

有停车焦虑的小伙伴一定都想拥有一辆微型车,无论你多晚回家,只要有一小块空挡就能泊车,然后上楼睡觉。所谓快乐,莫过于此。在纯电动微型车领域,宝骏可以说是经验最为丰富的厂家之一。相继推出了E100和E200,…

太极计算机ehr系统,(数据科学学习手札21)sklearn.datasets常用功能详解

作为Python中经典的机器学习模块,sklearn围绕着机器学习提供了很多可直接调用的机器学习算法以及很多经典的数据集,本文就对sklearn中专门用来得到已有或自定义数据集的datasets模块进行详细介绍;datasets中的数据集分为很多种,本…

权限申请_Android 开发工程师必须掌握的动态权限申请,三步轻松搞定!

Android 6.0 / Android M 发布后,手机权限被分为两种,即:Normal Permission / 正常权限 和Dangerous Permission / 危险权限,更好的保护了用户的隐私,极大提升了系统安全性!因此,我们在APP开发过…