效果展示

TCP实现一个简易的聊天室 (Unity&&C#完成)

TCP

Transmission Control Protocol 传输控制协议

TCP面向连接的流模式(俗称:网络流)。即传输数据之前源端和终端建立可靠的连接,保证数据传输的正确性 

流模式:由于建立连接,收到的数据都是同一主机发送的,所有可以发送端Write一次,接收端Read多次;也可以发送端Write多次,接收端Read多次。但每次传输数据最大为1460字节。

 

 

实现步骤

 

服务端                                                                       客户端

获取本机终结点                                                   获取服务器终结点  

创建TcpListener对象,开启侦听器                      创建TcpClient对象                         

等待客户端连接                                                   连接服务器

获取针对客户端连接的网络流客户端通信           通过网络流与服务器通信                         

 ……                                                                        ……         

关闭连接                                                                关闭连接

 

using System.Collections;
using System.Collections.Generic;
using System.Net.Sockets;
using UnityEngine;
using Common;
using UnityEngine.UI;
using System.Net;
using System;
using System.Text;

/// <summary>
/// TCP 客户端  发送消息
/// </summary>
public class ChatTCPClientTest : MonoBehaviour
{
    private InputField messageInput;
    private TcpClient tcpClient;
    private void Start()
    {

        var server = FindObjectOfType<ChatTCPServerTest>();
        IPEndPoint ep = new IPEndPoint(IPAddress.Parse(server.serverIP), server.serverPort);
        //创建终结点
        tcpClient = new TcpClient();
        //1. 创建Socket
        tcpClient.Connect(ep);  ////三次握手(连接请求)
        //使用指定的远程网络终结点将客户端连接到TCP主机
        messageInput = transform.FindChildByName("MessageInput").GetComponent<InputField>();
        transform.FindChildByName("Send").GetComponent<Button>().onClick.AddListener(OnSendButtonClient);
    }

    private void OnSendButtonClient()
    {
        SendChatMessage(messageInput.text);
    }
    private void SendChatMessage(string msg)
    {
        //获取网络流
        NetworkStream stream = tcpClient.GetStream();
        //用于发送消息和接收消息

        byte[] dgramContent = Encoding.UTF8.GetBytes(msg);
        //传入内容
        stream.Write(dgramContent, 0, dgramContent.Length);
        //写入网络流  内容  从那开始发  发的长度
    }
    /// <summary>
    /// 3.关闭连接/释放资源
    /// </summary>
    private void OnApplicationQuit()
    {
        tcpClient.Close();
    }
}
ChatTCPClientTest

相关文章:

  • 2022-12-23
  • 2021-06-10
  • 2022-02-09
  • 2022-12-23
  • 2021-12-22
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-09
  • 2021-09-15
  • 2021-11-15
相关资源
相似解决方案