C#_SOCKET通信例程

下面这个实例是一个完整的使用Socket实现的聊天

(只限于局域网,如果能提供一个高权限的IP就可以实现类似QQ聊天),其中的原理是:首先开启服务端,打开侦听(任何端口为6600的IP)


下面实现的代码:服务端+客户端

【VS2005 C#.NET 2.0】

【服务端】{三个窗体:About.cs,ServerMain.cs,Set.cs}:

(ServerMain.cs窗体代码)

using System;

using System.Text;
using System.Windows.Forms;

using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Xml;

namespace Server
{
    public partial class ServerMain : Form
    {
        public ServerMain()
        {
            InitializeComponent();
        }

        private void ServerMain_Load(object sender, EventArgs e)
        {
            this.CmdStar.Enabled = true;
            this.CmdStop.Enabled = false;
        }

        private void 配置参数ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Set TSet = new Set();
            TSet.ShowDialog();
        }

        private void 关于ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            About TAbout = new About();
            TAbout.Show();
        }
        /// 
        /// 获得XML文件中的端口号
        /// 
        /// 
        private int GetPort()
        {
            try
            {
                XmlDocument TDoc = new XmlDocument();
                TDoc.Load("Settings.xml");
                string TPort = TDoc.getElementsByTagName_r("ServerPort")[0].InnerXml;
                return Convert.ToInt32(TPort);

            }
            catch { return 6600; }//默认是6600
        }

        //声明将要用到的类
        private IPEndPoint ServerInfo;//存放服务器的IP和端口信息
        private Socket ServerSocket;//服务端运行的SOCKET
        private Thread ServerThread;//服务端运行的线程
        private Socket[] ClientSocket;//为客户端建立的SOCKET连接
        private int ClientNumb;//存放客户端数量
        private byte[] MsgBuffer;//存放消息数据

        private void CmdStar_Click(object sender, EventArgs e)
        {
            ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //提供一个 IP 地址,指示服务器应侦听所有网络接口上的客户端活动
            IPAddress ip = IPAddress.Any;
            ServerInfo=new IPEndPoint(ip,this.GetPort());
            ServerSocket.Bind(ServerInfo);//将SOCKET接口和IP端口绑定
            ServerSocket.Li

你可能感兴趣的:(c#/.net)