tcp unity 图片_Unity 简易聊天室(基于TCP)(2)
客戶端用Unity開(kāi)發(fā),主要就是搭建一下聊天室的UI界面:輸入框,聊天內(nèi)容顯示框,發(fā)送按鈕
灰色背景的就是Message,也就是聊天內(nèi)容的顯示框,是一個(gè)Text類型,這里創(chuàng)建UI方面就不多講了
在Canvas下掛一個(gè)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()
{
//創(chuàng)建一個(gè)socket,綁定和服務(wù)器一樣的ip和端口號(hào),然后執(zhí)行Connect就可以連接上服務(wù)器了(服務(wù)器已經(jīng)運(yùn)行)
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";回調(diào)函數(shù)不能調(diào)用Unity的組件、UI;所以只能在Update里用,而不能直接在ReceiveCallBack(回調(diào)函數(shù)不屬于Unity的主線程)
msg = "";
}
}
private void OnSendClick() ?//綁定到發(fā)送按鈕的方法
{
if (inputField.text != "")
{
byte[] databytes = Encoding.UTF8.GetBytes(inputField.text);
clientSocket.Send(databytes);
inputField.text = "";
}
}
private void ClientStart() ?//開(kāi)始接收從服務(wù)器發(fā)來(lái)的消息
{
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(); ?//重復(fù)接收從服務(wù)器發(fā)來(lái)的信息
}
catch(Exception e)
{
Debug.Log("ReceiveCallBack:" + e);
}
}
void OnDestroy()
{
clientSocket.Close();
}
}
總結(jié)
以上是生活随笔為你收集整理的tcp unity 图片_Unity 简易聊天室(基于TCP)(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux6无法启动iscsi服务,RH
- 下一篇: 第五人格服务器维修中怎么进,第五人格进不