【网络编程】Unity中使用Socket编程
  EFTJ6596AiAP 2023年11月02日 52 0

基本介绍

名词解释

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编程_ipad_02

客户端:

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 服务端日常配合 下一篇: 工具1:SecureCRT
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

EFTJ6596AiAP