国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity】Socket網(wǎng)絡通信(TCP) - 最基礎的客戶端通信流程

這篇具有很好參考價值的文章主要介紹了【Unity】Socket網(wǎng)絡通信(TCP) - 最基礎的客戶端通信流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇文章主要內(nèi)容是客戶端與服務器通信的內(nèi)容,服務端代碼可以看我的這一篇文章【Unity】Socket網(wǎng)絡通信(TCP) - 最基礎的C#服務端通信流程
客戶端與服務器的整個流程比較相似,客戶端會更加簡單一些:

  1. 創(chuàng)建socket
  2. 連接服務器
  3. 收發(fā)消息
  4. 釋放socket,關(guān)閉連接

創(chuàng)建Socket

和服務端創(chuàng)建socket一樣,直接new一個Socket對象就可以了,構(gòu)造函數(shù)傳入的參數(shù)分別是
1.IP地址類型。AddressFamily.InterNetwork是IPv4類地址,AddressFamily.InterNetworkV6是IPv6類地址,這里用的是IPv4地址。
2.socket類型。TCP協(xié)議對應的Socket類型是流類型,所以這個參數(shù)用的是SocketType.Stream。
3.協(xié)議類型。選擇TCP協(xié)議。
注意:Socket需要引用命名空間using System.Net.Sockets;

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

連接服務器

使用socket提供的Connect方法即可,需要傳入一個EndPoint對象。這里需要注意的是,IP地址填的是服務器的IP地址,端口號也是服務端的端口號。(我這里測試因為服務端和客戶端是在同一臺機器上,所以都是用的127.0.0.1)
注意:IPEndPoint需要引用命名空間using System.Net;

IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);
socket.Connect(endpoint);

接收服務端發(fā)來的消息

由于我們在寫服務端的時候是先發(fā)的消息,所以我們客戶端先接收一下服務端發(fā)來的消息。接收消息的邏輯和服務端一致,使用socket提供的Receive方法接收就行,同樣是先定義一個字節(jié)數(shù)組來接收消息,再解析字節(jié)數(shù)組就可以了。
這里服務端發(fā)過來的是字符串,我們直接將字節(jié)數(shù)組轉(zhuǎn)化成字符串就行了,Encoding需要引用命名空間using System.Text;

byte[] msg = new byte[1024];
int msgLength = socket.Receive(msg);
Debug.Log("收到服務器發(fā)送的消息:" + Encoding.UTF8.GetString(msg, 0, msgLength));

發(fā)送消息

發(fā)送消息直接用socket提供的Send方法就行,參數(shù)需要一個字節(jié)數(shù)組,由于我們的服務端只寫了解析字符串的邏輯,那我們客戶端就發(fā)個字符串消息過去,字符串需要轉(zhuǎn)成字節(jié)數(shù)組。

socket.Send(Encoding.UTF8.GetBytes("這里是unity客戶端,over!"));

釋放Socket,關(guān)閉連接

使用socket提供的Shutdown函數(shù)關(guān)閉發(fā)送/接收,然后Close關(guān)閉就可以釋放連接了。
Shutdown傳入的參數(shù)可以是以下3種,Both是接收/發(fā)送都關(guān)閉,Receive是關(guān)閉接收,Send是關(guān)閉發(fā)送。

socket.Shutdown(SocketShutdown.Both);
socket.Close();

調(diào)試

首先我們先運行服務端程序,然后再運行我們的unity客戶端程序,就能在客戶端看到服務端發(fā)來的消息了,同樣服務端也可以收到我們客戶端發(fā)送過去的消息。
【Unity】Socket網(wǎng)絡通信(TCP) - 最基礎的客戶端通信流程

完整代碼

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

public class TCPLearn : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //創(chuàng)建socket
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //連接服務器
        IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);
        //這里防止連接失敗報錯,SocketException能提供錯誤代碼
        try
        {
            socket.Connect(endpoint);
        }catch(SocketException e)
        {
            Debug.Log("服務器連接失敗:" + e.ErrorCode);//10061是服務器拒絕連接
        }
        
        //收發(fā)消息
        //收消息
        byte[] msg = new byte[1024];
        int msgLength = socket.Receive(msg);
        Debug.Log("收到服務器發(fā)送的消息:" + Encoding.UTF8.GetString(msg, 0, msgLength));
        //發(fā)消息
        socket.Send(Encoding.UTF8.GetBytes("這里是unity客戶端,over!"));

        //釋放連接
        socket.Shutdown(SocketShutdown.Both);
        socket.Close();
    }
}

以上就是這篇文章的所有內(nèi)容了,此為個人學習記錄,如有哪個地方寫的有誤,勞煩大佬指出,感謝,希望對各位看官有所幫助!文章來源地址http://www.zghlxwxcb.cn/news/detail-438204.html

到了這里,關(guān)于【Unity】Socket網(wǎng)絡通信(TCP) - 最基礎的客戶端通信流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 網(wǎng)絡編程3——TCP Socket實現(xiàn)的客戶端服務器通信完整代碼(詳細注釋幫你快速理解)

    網(wǎng)絡編程3——TCP Socket實現(xiàn)的客戶端服務器通信完整代碼(詳細注釋幫你快速理解)

    本人是一個剛剛上路的IT新兵,菜鳥!分享一點自己的見解,如果有錯誤的地方歡迎各位大佬蒞臨指導,如果這篇文章可以幫助到你,勞請大家點贊轉(zhuǎn)發(fā)支持一下! 今天分享的內(nèi)容是TCP流套接字實現(xiàn)的客戶端與服務器的通信,一定要理解 DatagramSocket,DatagramPacket 這兩個類的作用以及方法

    2024年02月12日
    瀏覽(77)
  • Java【網(wǎng)絡編程2】使用 TCP 的 Socket API 實現(xiàn)客戶端服務器通信(保姆級教學, 附代碼)

    Java【網(wǎng)絡編程2】使用 TCP 的 Socket API 實現(xiàn)客戶端服務器通信(保姆級教學, 附代碼)

    ??各位讀者好, 我是小陳, 這是我的個人主頁 ??小陳還在持續(xù)努力學習編程, 努力通過博客輸出所學知識 ??如果本篇對你有幫助, 煩請點贊關(guān)注支持一波, 感激不盡 ?? 希望我的專欄能夠幫助到你: JavaSE基礎: 基礎語法, 類和對象, 封裝繼承多態(tài), 接口, 綜合小練習圖書管理系統(tǒng)

    2024年02月05日
    瀏覽(33)
  • 【Unity】Socket網(wǎng)絡通信(TCP) - 實現(xiàn)簡單的多人聊天功能

    【Unity】Socket網(wǎng)絡通信(TCP) - 實現(xiàn)簡單的多人聊天功能

    多客戶端連接服務器其原理是在服務端保存客戶端連入后與客戶端通信的socket,由于等待客戶端連接會阻塞主線程,所以結(jié)合多線程就能實現(xiàn)多客戶端連入功能。多人聊天只需要將A客戶端發(fā)來的消息,轉(zhuǎn)發(fā)給除A客戶端外的其他客戶端,即可實現(xiàn)。如果你還不怎么熟悉服務端

    2024年02月03日
    瀏覽(39)
  • C++網(wǎng)絡編程 TCP套接字基礎知識,利用TCP套接字實現(xiàn)客戶端-服務端通信

    C++網(wǎng)絡編程 TCP套接字基礎知識,利用TCP套接字實現(xiàn)客戶端-服務端通信

    流式套接字編程針對TCP協(xié)議通信,即是面向?qū)ο蟮耐ㄐ?,分為服務端和客戶端兩部分?1)加載套接字庫( 使用函數(shù)WSAStartup() ),創(chuàng)建套接字( 使用socket() ) 2)綁定套接字到一個IP地址和一個端口上( 使用函數(shù)bind() ) 3)將套接字設置為監(jiān)聽模式等待連接請求( 使用函數(shù)

    2024年02月03日
    瀏覽(103)
  • Linux網(wǎng)絡編程:Socket服務器和客戶端實現(xiàn)雙方通信

    Linux網(wǎng)絡編程:Socket服務器和客戶端實現(xiàn)雙方通信

    目錄 一,什么是網(wǎng)絡編程 二,為什么使用端口號 三,TCP協(xié)議與UDP協(xié)議 ①TCP(傳輸控制協(xié)議) ②UDP(用戶數(shù)據(jù)報協(xié)議,User Data Protocol) ③總結(jié)歸納 四,Socket服務器和客戶端的開發(fā)流程 五,服務器和客戶端相關(guān)API說明 ①socket()函數(shù) ②bind()函數(shù) ③listen()函數(shù) ④accept()函數(shù) ⑤客戶端

    2024年02月11日
    瀏覽(34)
  • 網(wǎng)絡通信(Socket/TCP/UDP)

    網(wǎng)絡通信(Socket/TCP/UDP)

    Socket(又叫套接字)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡通信的基本操作單元。它是網(wǎng)絡通信過程中端點的抽象表示,包含進行網(wǎng)絡通信必須的五種信息:連接協(xié)議,客戶端的IP地址,客戶端的端口,服務器的IP地址,服務器的端口。 一個Socket是一對IP地址和端口。 Socket可以看

    2024年01月22日
    瀏覽(23)
  • 【網(wǎng)絡】socket——TCP網(wǎng)絡通信 | 日志功能 | 守護進程

    【網(wǎng)絡】socket——TCP網(wǎng)絡通信 | 日志功能 | 守護進程

    ??作者:一只大喵咪1201 ??專欄:《網(wǎng)絡》 ??格言: 你只管努力,剩下的交給時間! 上篇文章中本喵介紹了UDP網(wǎng)絡通信的socket代碼,今天介紹TCP網(wǎng)絡通信的socket代碼。 和 udp 的網(wǎng)絡通信一樣, tcp 通信也需要服務器指定端口號,IP地址同樣使用 0.0.0.0 ,以便客戶端所有對服

    2024年02月16日
    瀏覽(24)
  • 【網(wǎng)絡通信】socket編程——TCP套接字

    【網(wǎng)絡通信】socket編程——TCP套接字

    TCP依舊使用代碼來熟悉對應的套接字,很多接口都是在udp中使用過的 所以就不會單獨把他們拿出來作為標題了,只會把第一次出現(xiàn)的接口作為標題 通過TCP的套接字 ,來把數(shù)據(jù)交付給對方的應用層,完成雙方進程的通信 在 tcpServer.hpp 中,創(chuàng)建一個命名空間 yzq 用于封裝 在命名

    2024年02月13日
    瀏覽(102)
  • 【Java網(wǎng)絡編程】基于UDP-Socket 實現(xiàn)客戶端、服務器通信

    【Java網(wǎng)絡編程】基于UDP-Socket 實現(xiàn)客戶端、服務器通信

    ? 哈嘍,大家好~我是你們的老朋友: 保護小周??? 本期為大家?guī)淼氖蔷W(wǎng)絡編程的 UDP Socket 套接字,基于 UDP協(xié)議的 Socket 實現(xiàn)客戶端服務器通信 ,Socket 套接字可以理解為是,傳輸層給應用層提供的一組 API,如此程序,確定不來看看嘛~~ 本期收錄于博主的專欄 : JavaEE_保

    2024年02月02日
    瀏覽(111)
  • C++網(wǎng)絡通信實例(TCP/IP協(xié)議,包括服務端與客戶端通信)

    C++網(wǎng)絡通信實例(TCP/IP協(xié)議,包括服務端與客戶端通信)

    創(chuàng)作不易 覺得有幫助請點贊關(guān)注收藏 TCP/IP是當下網(wǎng)絡協(xié)議棧中的主流協(xié)議 TCP屬于傳輸層的協(xié)議? 可靠傳輸 包括經(jīng)典的三次握手等等 IP協(xié)議是網(wǎng)絡層協(xié)議 盡全力傳輸?shù)豢煽?學過計算機網(wǎng)絡的同學們對這個應該比較熟悉 以下是使用C++進行網(wǎng)絡通信的實例? 服務端 主要使用

    2024年02月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包