C# 套接字编程:Scoket,我用Scoket做的C# Windows应用程序如下:-阿里云开发者社区

开发者社区> 开发与运维> 正文

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

简介: 首先请允许我做一个截图: 以上,是我服务端设计 我们知道:服务器端口数最大可以有65535个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。因此,我们可以通过程序随机获取一个当前可用的端口 我将此方法写成了一个类,如下: using System; using System.

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

以上,是我服务端设计

我们知道:服务器端口数最大可以有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

大致效果图如下:

@陈卧龙博客

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章