C# 实现C/S程序的开发

这篇博客分享了一位初学者如何使用C#实现C/S(客户机/服务器)程序的开发。博主详细介绍了服务端和客户端的代码实现,包括TCPListener和TcpClient的使用,数据的接收和发送,以及异常处理。还提供了源码下载链接,供读者参考学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我本人并不喜欢搞博客的,这次只是想把我学到的技术和大家分享一下.......

我也是一个刚入门的初级菜鸟!呵呵...

废话不想多说了..此代码有那些 看不明白的就找我...

源码到这里下载:http://download.youkuaiyun.com/source/2151759


这是服务端:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace Customer
{
    public partial class CustomerForm : Form
    {
        public CustomerForm()
        {
            InitializeComponent();
        }
        IPHostEntry host;//本机的IP
        TcpListener TCL;//创建一个监听
        Socket skt;//  用于发送命令和接受数据的
        IPEndPoint IP;//拼接IP和端口
        private void Form1_Load(object sender, EventArgs e)
        {//窗体加载后自动连接段客户端
            try
            {
                host = Dns.Resolve(Dns.GetHostName());//获取本机 的IP
                 IP = new IPEndPoint(host.AddressList[0], 10086);//将IP和端口拼接起来
                this.Text += "(" + IP.ToString() + ")";//在程序的标题上面显示本机的IP
                TCL = new TcpListener(IP);//初始化一个侦听,侦听端口为10086
                TCL.Start();//启动侦听
               BeginAcceptClient();//异步接受连接请求
               txtResults.Text += "/r/n /t服务器已经正常启动....侦听端口:" + IP.Port.ToString();//显示在消息框上面
               TxtSelect();//这是控制显示框的滚动条
            }
            catch (Exception ex)
            {
                txtResults.Text+="/r/n /t连接肉鸡出错!详细:"+ex.Message;
                TxtSelect();//这也是控制滚动条的
                skt.Close();//出现异常就关闭连接
            }
        }

//-----------------------异步接收传入的连接--------------------------------
        public static ManualResetEvent tcpManualResetEvent = new ManualResetEvent(true);

        public void BeginAcceptClient()
        {//异步接受客户端的请求
            tcpManualResetEvent.Set();//设置当前的线程处于等待状态...允许一个或者多个线程等待
            TCL.BeginAcceptSocket(new AsyncCallback(AcceptClient),TCL);//接受客户端的请求
            tcpManualResetEvent.WaitOne();//直到连接这个线程完成为止
           
        }
   
       public  string Results = "";//转换后的消息
       int count;//接收的数据长度
       public void AcceptClient(IAsyncResult ar)
       {//异步接受传入的连接请求
           Control.CheckForIllegalCrossThreadCalls = false;//这是让当前的控件能在通过线程访问
           TcpListener Listener = (TcpListener)ar.AsyncState;//异步的状态
           skt = Listener.EndAcceptSocket(ar);//接受传入的请求
          
           if (skt.Connected)//判断是否已经有客户端连接上,如果连接上后就读取数据
           {
            
               BeginAcceptClient();//再次接受客户端连接的请求,这个能解决客户端断开连接后能再次连接上
             
   &n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值