zoukankan      html  css  js  c++  java
  • 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

    大致效果图如下:

    @陈卧龙博客

  • 相关阅读:
    SQL server 2008 建立新用户
    2021.3.22-刷题 (移位)
    2021.3.17刷题-分割回文串
    2021.3.16 刷题--组合总和||(一种组合下元素不可重复选取)
    2021.3.15刷题-组合总和(元素可重复选取)
    2021.3.14刷题-设计哈希映射
    2021.3.13刷题-用拉链法设计哈希集合
    2021.3.12刷题-验证二叉树的前序序列化
    2021.3.11刷题-(删除二叉搜索树中的节点)
    2021.2.28刷题 回溯-电话字母组合
  • 原文地址:https://www.cnblogs.com/chenwolong/p/6611737.html
Copyright © 2011-2022 走看看