• 大小: 621KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C#
  • 标签: Socket  多线程  C#  .net4.0  

资源简介

VS2010开发的,使用C#语言,采用多线程,基于Socket的聊天室程序,包括服务器端和客户端,学习Socekt的代码,大家互相交流。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

using System.Net;
using System.Threading;

namespace ChatRoomClient
{
    public partial class FormChatClient : Form
    {
        public FormChatClient()
        {
            InitializeComponent();
        }

        private Thread threadclient = null;//客户端用于接收数据的线程
        private Socket socketClient = null;//客户端用于接收数据的套接字

        private void btnConnect_Click(object sender EventArgs e)
        {
            try
            {
                IPAddress ip = IPAddress.Parse(this.txtServerIp.Text.Trim());
                IPEndPoint point = new IPEndPoint(ip int.Parse(this.txtPort.Text.Trim()));
                socketClient = new Socket(AddressFamily.InterNetwork SocketType.Stream ProtocolType.Tcp);
                socketClient.Connect(point);//不用监听直接创建连接
                //开启一个线程实例
                threadclient = new Thread(RecMsg);
                //设为后台线程
                threadclient.IsBackground = true;
                //启动线程
                threadclient.Start();
                ShowMsg(“---------服务器连接成功--------“);
            }
            catch (Exception)
            {
                ShowMsg(“---------服务器不在线--------“);
            }
            
        }

        //线程中用于接收数据的方法
        void RecMsg()
        {
            while (true)
            {
                try
                {
                    //创建一个字节数组接收数据
                    byte[] arrMsgRec = new byte[1024 * 1024 * 2];
                    //接收数据
                    int length = socketClient.Receive(arrMsgRec);
                    //将字节数组转换成字符串此时是将所有的元素都转成字符串了,而真正接收到的只有服务端发来的几个字符。
                    string strMsgRec = System.Text.Encoding.UTF8.GetString(arrMsgRec 0 length);
                    //将字符串显示到界面上
                    ShowMsg(“服务器:“+strMsgRec);
                }
                catch(Exception e)
                {
                    ShowMsg(“-----服务器已经断开连接!-----“);
                    socketClient.Close();
                    //结束当前线程
                    Thread.CurrentThread.Abort();
                }
            }
        }

        //显示信息
        private delegate void changeText(string msg);
        /// 
        /// 添加信息到文本框
        /// 

        /// 
        void ShowMsg(string msg)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new changeText(ShowMsg) msg);
            }
            else
            {
                txtMsg.AppendText(msg + “\r\n“);
            }

        }

        /// 
        /// 往服务器发送数据
        /// 

        /// 
        /// 
        private void btnSend_Click(object sen

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1351  2012-05-21 17:24  聊天室.sln

    .....H.      2054  2012-05-21 21:55  聊天室.sln.docstates.suo

    ..A..H.     29184  2012-05-21 21:55  聊天室.suo

     文件          8  2012-05-21 21:55  _ReSharper.聊天室\AspFileDataCache.dat

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\BuildscriptCache\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\BuildscriptCache\.version

     文件         28  2012-05-21 15:56  _ReSharper.聊天室\BuildscriptCache\6\1fdeb45d.dat

     文件       2260  2012-05-21 21:55  _ReSharper.聊天室\CompletionStatistics\Statistics.dat

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\ConditionalNames\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\ConditionalNames\.version

     文件        576  2012-05-21 15:56  _ReSharper.聊天室\ConditionalNames\2\74cbf11.dat

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\javascriptCache\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\javascriptCache\.version

     文件      52629  2012-05-21 15:56  _ReSharper.聊天室\javascriptCache\3\51b66cc6.dat

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\JSTest\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\JSTest\.version

     文件        209  2012-05-21 17:20  _ReSharper.聊天室\ModuleIds.xml

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\MVC\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\MVC\.version

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\NamedArguments\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\NamedArguments\.version

     文件        472  2012-05-21 15:56  _ReSharper.聊天室\NamedArguments\2\74cbf11.dat

     文件        922  2012-05-21 15:56  _ReSharper.聊天室\PersistenIdIndex.bin

     文件       3457  2012-05-21 21:55  _ReSharper.聊天室\RecentItems\RecentFiles.dat

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\Resources\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\Resources\.version

     文件         28  2012-05-21 15:56  _ReSharper.聊天室\Resources\3\115c85de.dat

     文件       1502  2012-05-21 15:56  _ReSharper.聊天室\SymbolCache.bin

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\TagPrefixes\.crc

     文件          4  2012-05-21 15:56  _ReSharper.聊天室\TagPrefixes\.version

............此处省略263个文件信息

评论

共有 条评论