想做一个网络斗地主 需要搭建一个服务器 ,所以今天就用vs的控制台来搭建一个简单的服务器和客户端。
材料:VS2015、C#
首先创建一个控制台应用程序并起个名字.
新建完成后开始编写服务端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
/// <summary>
/// 服务器
/// 1.接收请求
/// 2.发送数据
/// 3.发送请求
/// 4.断开连接
/// </summary>
static Socket serverSocket = null;
static void Main(string[] args)
{
//地址族 传输协议 协议类型
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//设置连接IP
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 5555);
//进行绑定
serverSocket.Bind(endPoint);
//设置最大监听
serverSocket.Listen(10);
Console.WriteLine("服务器启动成功");
Thread thread = new Thread(listenClientThread);
thread.Start();
while (true){ }
}
private static void listenClientThread()
{
Console.WriteLine("服务器线程启动成功");
//连接的客户端对象 有客户端链接就会触发
Socket clientsocket= serverSocket.Accept();
Console.WriteLine("有客户端连接成功");
clientsocket.Send(Encoding.Default.GetBytes("客户端连接成功"+clientsocket.AddressFamily.ToString()));
Thread receThread = new Thread(receiveClientMessage);
receThread.Start(clientsocket);
}
//接收来自客户端的消息
private static void receiveClientMessage(object clientSocket) {
Socket socket = clientSocket as Socket;
byte[] buffer = new byte[1024];
//接收到数据的长度
int length = socket.Receive(buffer);
Console.WriteLine(Encoding.Default.GetString(buffer,0,length));
}
}
}
至此服务端编写完成 接下来是客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace client
{
class Program
{
static Socket clientSocket = null;
static void Main(string[] args)
{
clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.31.222"),5555);
//开始连接
Console.WriteLine("开始连接");
clientSocket.Connect(endPoint);
Console.WriteLine("连接成功到服务器");
byte[] result = new byte[1024];
int length = clientSocket.Receive(result);
Console.WriteLine(Encoding.Default.GetString(result,0,length));
clientSocket.Send(Encoding.Default.GetBytes("服务器你好我是客户端"));
while (true)
{
}
}
}
}
这下一个简单的服务器就搭建完成了 开始试验一下吧