服务器端
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