C#多线程编程---一个简单的聊天程序(Server)

这是一个基于C#的TCP协议聊天软件服务器端实现,使用多线程处理客户端连接。通过监听8000端口接收客户端请求,支持连接、聊天、私信和断开等基本功能。代码中存在一些问题,如私聊未完全实现,作者提供了Email以获取改进的代码。
摘要由CSDN通过智能技术生成
        这两天公司要求做一个聊天软件,要求基于Socket---TCP协议的。本人偷懒到网上一搜,好多阿!可后来仔细一看其实只有一个还算沾边。于是就下载 下来,但是编译、运行都有问题。后来又找了好几个,都是一样的。估计就是大家你抄袭我的我抄袭他的,谁也没有真正的编译运行一下。结果看似挺好的软件,实 际上根本不能运行。        于是我用了一天的时间(其实没有这么多。)把它们整理了一下,基本上主要功能可以运行了。下面把它贴到网上供大家参考。 服务器端:                                          (1)Form1.cs[设计]界面 (2)Form1.cs[代码]
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

using System.Threading;

using System.Collections;



namespace ChatServer

{

    public partial class Form1 : Form

    {

        static int listenport = 8000;

        Socket clientsocket;

        Thread clientservice;

        ArrayList clients;

        Thread threadListen;

        TcpListener listener;

        delegate void AddListCallBack(string TextContext);



        public Form1()

        {

            InitializeComponent();

        }



        private void Form1_Load(object sender, EventArgs e)

        {

            clients = new ArrayList();

        }



        private void StartListening()

        {

            listener = new TcpListener(IPAddress.Parse("127.0.0.1"),listenport);

            listener.Start();

           

            while (true)

            {

                try

                {

                    Socket s = listener.AcceptSocket();

                    clientsocket = s;

                    clientservice = new Thread(new ThreadStart(ServiceClient));

                    clientservice.Start();



                    //MessageBox.Show(clientservice.ToString());

                }

                catch (Exception e)

                {

                    Console.WriteLine(e.ToString());

                }

            }

        }

        private void ServiceClient()

        {

            Socket client = clientsocket;

           

            bool keepalive = true;



            while (keepalive)

            {

                Byte[] buffer = new Byte[1024];

                client.Receive(buffer);

                string clientcommand = System.Text.Encoding.ASCII.GetString(buffer);





                string[] tokens = clientcommand.Split(new Char[]{'|'});

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值