在局域网等联机游戏中 我们有很多方式可以实现联机
有各种插件等等
我们用代码来自己写服务器端和客户端 不用任何的插件
我先给出源码
using System;
using System.Net.Sockets;
using System.Net;
namespace JungleWars//服务器端
{
class Program
{
static void Main(string[] args)
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//地址类型,流,协议类型
//192.168.43.76 本机ip:127.0.0.1
IPAddress ipaddress = IPAddress.Parse("192.168.43.76");
IPEndPoint ipendpoint = new IPEndPoint(ipaddress, 8000);
serverSocket.Bind(ipendpoint);//绑定完成
serverSocket.Listen(10);//处理链接队列个数 为0则为不限制
Socket clientSocket = serverSocket.Accept();//接收一个客户端链接
///向客户端发送一条消息
string msg = "Hello client!";
byte[] date = System.Text.Encoding.UTF8.GetBytes(msg);//转换成为bytes数组
clientSocket.Send(date);
///接收一条客户端的消息
byte[] dateBuffer = new byte[1024];
int count = clientSocket.Receive(dateBuffer);
string msgReceive = System.Text.Encoding.UTF8.GetString(dateBuffer, 0, count);
Console.WriteLine(msgReceive);
Console.ReadKey();
clientSocket.Close();
serverSocket.Close();
}
}
}
using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
namespace Tcp客户端
{
class Program
{
static void Main(string[] args)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("192.168.43.76"), 8000));
byte[] date = new byte[1024];
int count = clientSocket.Receive(date);
string msg = Encoding.UTF8.GetString(date, 0, count);
Console.WriteLine(msg);
string s = Console.ReadLine();
clientSocket.Send(Encoding.UTF8.GetBytes(s));
Console.ReadKey();
clientSocket.Close();
}
}
}
上边两个代码即可实现简单的通信
我们可以实现互发消息
客户端:
服务器端:
其中的语句注释写的很清楚 如果有问题可以联系我
主页有我的联系方式