• 大小: 105KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-13
  • 语言: C#
  • 标签: TCP  C#  Socket  Winform  

资源简介

在原有从网上获取的代码的基础上进行了修改,包括一些捕获异常以及按钮的应用,扩充了一个listbox确保服务端可以选择和不同的客户端进行通信。使用TCP协议,socket通信,可以作为学习使用。

资源截图

代码片段和文件信息

/*C# winform实现一个服务端和多个客户端进行通信
 * 作者:IT格子
 * 微博:IT格子
 * QQ:320587491
 * 如有疑问可联系我
 */

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 chat2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
            //关闭对文本框的非法线程操作检查
            TextBox.CheckForIllegalCrossThreadCalls = false;
        }
        Thread threadclient = null;
        Socket socketclient = null;
        List mlist = new List();
        private void textBox1_TextChanged(object sender EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender EventArgs e)
        {

        }

        private void Form1_Load(object sender EventArgs e)
        {

        }

        private void button1_Click(object sender EventArgs e)
        {
            this.button1.Enabled = false;
            //定义一个套接字监听
            socketclient = new Socket(AddressFamily.InterNetwork SocketType.Stream ProtocolType.Tcp);

            //获取文本框中的IP地址
            IPAddress address = IPAddress.Parse(textBox1.Text.Trim());

            //将获取的IP地址和端口号绑定在网络节点上
            IPEndPoint point = new IPEndPoint(address int.Parse(textBox2.Text.Trim()));

            try
            {
                //客户端套接字连接到网络节点上,用的是Connect
                socketclient.Connect(point);
            }
            catch (Exception)
            {
                //MessageBox.
                MessageBox.Show(“连接失败\r\n“);
                this.button1.Enabled = true;
                return;
            }

            threadclient = new Thread(recv);

            threadclient.IsBackground = true;

            threadclient.Start();
        }

        private void recv()//
        {
            int x = 0;
            while (true)//持续监听服务端发来的消息
            {
                try
                {
                    //定义一个1M的内存缓冲区,用于临时性存储接收到的消息
                    byte[] arrRecvmsg = new byte[1024 * 1024];

                    //将客户端套接字接收到的数据存入内存缓冲区,并获取长度
                    int length = socketclient.Receive(arrRecvmsg);

                    //将套接字获取到的字符数组转换为人可以看懂的字符串
                    string strRevMsg = Encoding.UTF8.GetString(arrRecvmsg 0 length);
                    if (x == 1)
                    {
                        textBox3.AppendText(“服务器:“ + GetCurrentTime() + “\r\n“ + strRevMsg + “\r\n\n“);

                    }
                    else
                    {

                        textBox3.AppendText(strRevMsg + “\r\n\n“);
                        x = 1;
                    }
                }
                catch (Exception ex)
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-22 14:21  客户端\
     目录           0  2018-11-22 14:42  客户端\chat2\
     目录           0  2018-11-22 14:42  客户端\chat2\.vs\
     目录           0  2018-11-22 14:42  客户端\chat2\.vs\chat2\
     目录           0  2018-11-22 14:42  客户端\chat2\.vs\chat2\v14\
     文件       16896  2018-11-22 14:41  客户端\chat2\.vs\chat2\v14\.suo
     目录           0  2018-11-22 14:21  客户端\chat2\chat2\
     文件         857  2018-11-22 14:21  客户端\chat2\chat2.sln
     文件       16896  2018-11-22 14:47  客户端\chat2\chat2.suo
     目录           0  2018-11-22 14:21  客户端\chat2\chat2\bin\
     目录           0  2018-11-22 14:39  客户端\chat2\chat2\bin\Debug\
     文件       12800  2018-11-22 14:43  客户端\chat2\chat2\bin\Debug\chat2.exe
     文件       28160  2018-11-22 14:43  客户端\chat2\chat2\bin\Debug\chat2.pdb
     文件       11608  2018-11-22 14:43  客户端\chat2\chat2\bin\Debug\chat2.vshost.exe
     文件         490  2018-04-12 07:35  客户端\chat2\chat2\bin\Debug\chat2.vshost.exe.manifest
     文件        3562  2018-11-22 14:47  客户端\chat2\chat2\chat2.csproj
     文件        5732  2018-11-22 14:47  客户端\chat2\chat2\Form1.cs
     文件        8037  2018-11-22 14:43  客户端\chat2\chat2\Form1.Designer.cs
     文件        6016  2018-11-22 14:43  客户端\chat2\chat2\Form1.resx
     目录           0  2018-11-22 14:21  客户端\chat2\chat2\obj\
     目录           0  2018-11-22 14:21  客户端\chat2\chat2\obj\x86\
     目录           0  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\
     文件         690  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.csproj.FileListAbsolute.txt
     文件         975  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.csproj.GenerateResource.Cache
     文件        1757  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.csprojResolveAssemblyReference.cache
     文件       12800  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.exe
     文件         180  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.Form1.resources
     文件       28160  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\chat2.pdb
     文件         180  2018-11-22 14:39  客户端\chat2\chat2\obj\x86\Debug\chat2.Properties.Resources.resources
     文件        1229  2018-11-22 14:42  客户端\chat2\chat2\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6125  2018-11-22 14:43  客户端\chat2\chat2\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
............此处省略42个文件信息

评论

共有 条评论