C# 套接字编程:Scoket,我用Scoket做的C# Windows应用程序如下:

首先请允许我做一个截图:

以上,是我服务端设计

我们知道:服务器端口数最大可以有65535个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。因此,我们可以通过程序随机获取一个当前可用的端口

我将此方法写成了一个类,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace ServerForm.CommonCS
{
    public class PortHelper
    {

        /// <summary>
        /// 这个方法是验证某个端口是否可用
        /// </summary>
        /// <param name="port"></param>
        /// <returns></returns>
        public static bool IsAvaliable(int port)
        {

            Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            bool result = false;
            try
            {
                sk.Bind(new IPEndPoint(IPAddress.Any, port));//尝试绑定,因为如果该端口已经被使用,则无法绑定,会导致异常
                result = true;
            }
            catch
            {
                result = false;
            }
            finally
            {
                sk.Close();
            }

            return result;

        }

        /// <summary>
        /// 这个方法取得一个可用的端口
        /// </summary>
        /// <returns></returns>
        public static int GetAvaliablePort()
        {
            Random rnd = new Random();
            int port = rnd.Next(1024, 65535);//随机产生一个动态的端口号
            while (!IsAvaliable(port))
            {
                port = rnd.Next(1024, 65535);
            }

            return port;
        }

    }
}
View Code

当然,这仅仅是获取可用端口的方法,对于套接字编程意义不大。

那么,根据上图可知,有个按钮叫做:开始监听,也就是说点击这个按钮,服务器将时时监听服务器的某个端口,代码如下:

今天心情不好,代码就不写了,直接上案例:

 代码下载路径:点击此下载

也可以通过链接打开:http://files.cnblogs.com/files/chenwolong/Socket.zip

大致效果图如下:

@陈卧龙博客

原文地址:https://www.cnblogs.com/chenwolong/p/6611737.html