首页 > 编程语言 >【网络编程】Unity中使用Socket编程

【网络编程】Unity中使用Socket编程

时间:2022-11-22 17:33:03浏览次数:67  
标签:Socket 编程 System bt Unity using 客户端 socket

基本介绍

名词解释

Socket:网络连接的一端被称为socket。一个socket包含以下五个元素:使用的协议、本机IP、本地端口、远程IP、远程端口。

IP地址:每台电脑都有一个自己的IP地址。

端口(port):是设备与外界通信交流的出口


​​每一个进程(客户端1、客户端2、服务端)可以拥有多个Socket,每个Socket通过不同端口与其他计算机连接。

每一条Socket连接代表着本地Socket→本地端口→网络介质→远程端口→远程Socket的链路。

网络通信的步骤示意图:

【网络编程】Unity中使用Socket编程_socket

利用socket通信的步骤

服务端:

  • 创建socket对象
  • Scock socket = new Socket()
  • 绑定监听消息IP和端口号
  • IPAddress ip = IPAddress.Parse()
  • EndPoint endPoint = new IPEndPoint(ip, 6000)
  • 开始监听客户端的连接请求
  • socket.Listen(100)
  • 接收消息
  •  byte[] bt = new byte[1024];//这里是消息的缓冲区
  • int messageclient = socket.Receive(bt);

客户端:

  • 创建socket实例对象
  • 连接服务器
  • tcpSocket.Connect(IPAddress.Parse("127.0.0.1"), 6000);
  • 接收消息
  • byte[] bt = new byte[1024] ;
  • int messgeLength = tcpSocket.Receive(bt);
  • 发送消息
  • tcpSocket.Send(ASCIIEncoding.UTF8.GetBytes("我有个问题"));​


Socket编程的一个栗子

以下代码参考了这篇博文:​​https://blog.csdn.net/m0_67391401/article/details/124093758​

服务端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace SocketGameServer
{
class Program
{
static void Main(string[] args)
{
//创建一个socket对象
Socket tcpsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

//绑定监听消息IP和端口号
IPAddress ip = IPAddress.Parse("199.199.1.230");
EndPoint endPoint = new IPEndPoint(ip, 6000);
tcpsocket.Bind(endPoint);
Console.WriteLine("服务器启动完成");

//开始监听客户端的连接请求
tcpsocket.Listen(100);
Socket socket = tcpsocket.Accept();
Console.WriteLine("有个客户端连接进来");

//向客户端发送消息
string message;
message = "你好,这里是服务端";
var date = ASCIIEncoding.UTF8.GetBytes(message);
socket.Send(date);

//接收服务端的消息
byte[] bt = new byte[1024];
int messageclient = socket.Receive(bt);
Console.WriteLine("接收从客户端发来的消息:" + ASCIIEncoding.UTF8.GetString(bt));
Console.ReadLine();
}
}
}

客户端代码:

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

public class ClientSocket : MonoBehaviour
{
private Socket tcpSocket;

public void OnBtnConnect()
{
tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

tcpSocket.Connect(IPAddress.Parse("199.199.1.230"), 6000);
Debug.Log("连接服务器");

byte[] bt = new byte[1024];
int messageLength = tcpSocket.Receive(bt);
Debug.Log(ASCIIEncoding.UTF8.GetString(bt));

tcpSocket.Send(ASCIIEncoding.UTF8.GetBytes("我有个问题"));
}
}

运行效果::服务器

【网络编程】Unity中使用Socket编程_socket_02

客户端:

【网络编程】Unity中使用Socket编程_socket_03


标签:Socket,编程,System,bt,Unity,using,客户端,socket
From: https://blog.51cto.com/u_15639010/5878287

相关文章

  • Java 网络编程(五)TCP
    客户端1.连接服务器socket2.发送消息//客户端publicclassTcpClientDemo01{publicstaticvoidmain(String[]args){Socketsocket=null......
  • websocket html网页
    <html><body>Welcome<br/><inputid="text"type="text"/><buttononclick="send()">Send</button><buttononclick="closeWebSocket()">Close</bu......
  • Java 网络编程(四)通信协议
    协议:约定,就好比我们现在说的是普通话网络通信协议:速率,传输码率,代码结构,传输控制......TCP/IP协议簇实际上是一组协议重要:1.TCP:用户传输协议2.UDP:用户数......
  • CompletableFuture异步编程
    1、创建/***publicstatic<U>CompletableFuture<U>supplyAsync(Supplier<U>supplier){..}*publicstatic<U>CompletableFuture<U>supplyAsync(Suppl......
  • 【unity】AssetBundle
    前言学xlua前应该要会打AB包。现在来补充一下有关AB包的使用。AssetBundle这里有一篇博客讲得很好,指路->【Unity框架】基于XLua框架搭建与AssetBundle的使用流程,不过仍......
  • 用C++写一遍linux socket通信过程
    要想深刻理解一些技术的底层,我还是觉得非用用c/c++写一遍的比较好。这其中的原因相信懂的人都懂。回忆一下上学时候在c语言课堂上的激动劲,如今感觉对c的理解真的都是那时候......
  • 用php入门网络编程
    学习思路以下是我对学习网络编程的一个简单的学习思路,之后我将会按照这个计划去逐步学习网络编程相关的知识。step1.原生php实现TCPServer->原生php实现http协议->掌......
  • php-socket
    网络中是如何通信数据传输?ip+端口+协议实现网络进程之间的通信,几乎所有的应用程序都是采用socket,“一切皆socket”。HTTPTCPSOCKET区别Http协议:对应于应用层。Http协......
  • NumPy笔记(2)—— 使用数组进行面向数组编程
    参考:《利用python进行数据分析》第4章注意,由于本文是jupyter文档转换来的,代码不一定可以直接运行,有些注释是jupyter给出的交互结果,而非运行结果!!文章目录​​1.生成网格数......
  • 极客编程python入门-切片
    切片取一个list或tuple的部分元素是非常常见的操作。>>>L=['Michael','Sarah','Tracy','Bob','Jack']>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']Python提......