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

大致效果图如下:

@陈卧龙博客

 

相关文章
|
15天前
|
消息中间件 编译器 API
Windows窗口程序
Windows窗口程序
|
16天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
1月前
|
Windows
实现Windows程序的数据更新
实现Windows程序的数据更新
12 0
|
1月前
|
Windows
构建布局良好的Windows程序
构建布局良好的Windows程序
11 0
|
1月前
|
C# Windows
初识Windows程序
初识Windows程序
10 0
|
1月前
|
Java 数据库 C#
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
31 0
|
2月前
|
自然语言处理 C# Windows
C#开源免费的Windows右键菜单管理工具
C#开源免费的Windows右键菜单管理工具
|
2月前
|
Java Linux Windows
windows实现自动部署jar包运行程序
windows实现自动部署jar包运行程序
43 0
|
4月前
|
移动开发
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
|
3月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
93 1