服务器端
- using System;
- using System.Collections;
- using System.Net.Sockets; //命名空间
- using System.Net;
- using System.Text;
- namespace SocketServer
- {
- //思路:1.创建一个Socket
- // 2.绑定一个ip和端口
- // 3.开始监听客户端的连接请求
- // 4.发送、接收消息
- class Program
- {
- static void Main(string[] args)
- {
- //1. 寻址方案 套接字类型 协议类型
- Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- //2.
- IPAddress ipaddress = IPAddress.Parse("127.0.0.1");
- EndPoint endpoint = new IPEndPoint(ipaddress, 5000); //向操作系统申请一份可用的ip和端口号
- tcpServer.Bind(endpoint);
- //3.
- tcpServer.Listen(100); //能同时接收100个客户端的请求
- Console.WriteLine("服务器启动完成");
- Socket clientSocket = tcpServer.Accept(); //暂停当前线程,直到一个客户端连接过来,返回Socket对象
- Console.WriteLine("接收到客户端的连接请求");
- //4.
- string message = "Hello Client";
- var data = Encoding.UTF8.GetBytes(message); //将字符串转成字节数组
- clientSocket.Send(data);
- Console.WriteLine("我向客户端发送了一条消息:"+message);
-
- byte[] data2 = new byte[1024]; //存放数组的容器
- int length = clientSocket.Receive(data2);
- string message2 = Encoding.UTF8.GetString(data2, 0, length);
- Console.WriteLine("我接收到客户端发来的消息:"+ message2);
- }
- using UnityEngine;
- using System.Collections;
- using System.Net.Sockets; //命名空间
- using System.Net;
- using System.Text;
- namespace SocketClient
- {
- //思路:1.创建一个Socket
- // 2.建立连接请求
- // 3.接收消息
- // 4.发送消息
- class Program
- {
- static void Main(string[] args)
- {
- private Socket tcpClient;
- private string serverIP = "127.0.0.1";
- private int serverPort = 5000;
- }
- void Start()
- {
- //1.
-
- tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- //2.
- IPAddress ipaddress = IPAddress.Parse(serverIP);
- EndPoint endpoint = new IPEndPoint(ipaddress, serverPort);
- tcpClient.Connect(endPoint);
- Debug.Log("请求服务器连接");
- //3.
- byte[] data = new byte[1024];
- int length = tcpClient.Receive(data);
- var message = Encoding.UTF8.GetString(data,0,length);
- Debug.Log("我接收到服务器发来的消息:"+ message);
- //4.
- string message2 = "这是我向服务器发送的消息";
- tcpClient.Send(Encoding.UTF8.GetBytes(message3));
- Debug.Log("我向服务器发送消息:"+message2);
- }
【附录】
1. 相关类
IPAddress类:包含了一个IP地址
IPEndPoint类:包含了一对IP地址和端口号
2. 相关方法
Socket():创建一个Socket
Bind():绑定一个本地的IP和端口号(IPEndPoint)
Listen():让 Socket侦听传入的连接尝试,并指定侦听队列容量
Connect():初始化与另一个Socket的连接
Accept():接收连接并返回一个新的socket
Send():输出数据到Socket
Receive():从Socket中读取数据
Close():关闭Socket