从零开始学Socket:(一)服务端和客户端创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15020543/article/details/83998624

上篇我提到Socket是TCP/IP的抽象接口。所以我们直接使用就好,没必要知其甚解。

1.打开VS 新建项目

名称,位置随意

这里名称是Server

框架选.NET 4.5(在这篇博客里也无所谓)

注意引用

using System.Net;
using System.Net.Sockets;

这两个命名空间

using System;
using System.Net;
using System.Net.Sockets;

namespace Server
{
    class Program
    {
       static void Main(string[] args)
        {
           
        } 
    }
}

2. 在Main函数外部声明一个Server,并编写一个StartServer函数,用于开启服务器

/// <summary>
/// 开启一个服务器
/// </summary>
static void StartServer()
{

}

在StartServer函数里做初始化操作

//实例化一个Socket
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

里面这些构造参数是什么意思呢?

选中Socket按F12来一探究竟

接着回到StartServer,然后设置IP,由于我们做测试,这里面的IP填的是我们电脑内网IP。放在服务器上的话就填服务器公网IP

//设置IP
IPAddress ipAdress = IPAddress.Parse("127.0.0.1");

然后设置端口,这里选定为88,同样的,放在服务器上要设置为服务器端口

然后设置网络终结点(包含IP和端口)

//设置网络终结点
IPEndPoint iPEndPoint = new IPEndPoint(ipAdress, 88);

然后绑定IP和端口号

//绑定ip和端口号
serverSocket.Bind(iPEndPoint);

最后设置监听队列长度,什么意思呢?就是等待连接的客户端数,如果设为0,就是不等待,来几个连几个。如果设为非零数。。。我也不知道会咋样(旁白:???)至此StartServer函数编写结束

//等待队列(开始监听端口号)
serverSocket.Listen(0);

服务端代码

using System;
using System.Net;
using System.Net.Sockets;

namespace Server
{
    class Program
    {
        static Socket serverSocket;
        static void Main(string[] args)
        {
            StartServer();
        }
        /// <summary>
        /// 开启一个Socket
        /// </summary>
        static void StartServer()
        {
            //实例化一个Socket
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //设置IP
            IPAddress ipAdress = IPAddress.Parse("127.0.0.1");

            //设置网络终结点
            IPEndPoint iPEndPoint = new IPEndPoint(ipAdress, 88);

            //绑定ip和端口号
            serverSocket.Bind(iPEndPoint);

            //等待队列(开始监听端口号)
            serverSocket.Listen(0);
        }
    }
}

3.然后是客户端,和服务端大同小异,注意IP这里写的是内网IP,也就是服务器端所绑定的IP。如果放到服务器上,还是要写公网IP

可以了解一下Connect函数

using System;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace ClientTest
{
    class Program
    {
        //声明客户端
        static Socket clientSocket;
        static void Main(string[] args)
        {
            StartClient();
        }
        /// <summary>
        /// 开启客户端并连接到服务器端
        /// </summary>
        static void StartClient()
        {
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 88));
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_15020543/article/details/83998624