C#Socket通信与RabbitMQ消息中间件,控制台小项目

本项目展示了使用C#的Socket实现教师与学生客户端之间的消息传递,服务端将接收到的消息通过RabbitMQ转发,同时有两个应用分别实时接收并展示RabbitMQ消息,其中一个负责数据入库。教师每秒发送一次,学生每半秒发送一次,持续不断。项目实现了数据的实时更新与持久化。
摘要由CSDN通过智能技术生成

1.实现的功能:两个控制台Teacher,与Student,也是实体类。通过Socket发送老师与学生消息,到服务端,老师1s发一次,学生0.5s发一次,持续发,然后服务端把消息发送到iRabbitMq,然后一个窗体接受Rabbitmq消息并且实时展示收到老师信息多少条,学生信息多少条。窗体2s刷新一次。然后再一个控制台,实时接收Rabbitmq消息,写入数据库。

2.(1)老师端

using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using BaseClient;
using Entity;
using Newtonsoft.Json;
namespace teacherClient
{
    class teacherClient
    {
        static void Main(string[] args)
        {
            Socket socket = BaseClass.getConnection();
            Thread thread = new Thread(new ParameterizedThreadStart(sendMessage));
            thread.Start(socket);
        }

        public static void sendMessage(Object Socket)
        {
            int count = 0;
            string name = "张老师";
            int age = 19;
            while (true)
            {
                try
                {
                    Teacher teacher = new Teacher();
                    {
                       teacher.Name = name;
                        teacher.Age = age;
                        teacher.Sex = (count % 2 == 0) ? "男" : "女";
                        teacher.Major = (count % 2 == 0) ? "数学" : "语文";
                    };
                    //将学生对象序列化为json字符串
                    string message = JsonConvert.SerializeObject(teacher);
                    SerializeWrapper serializeStudent = new SerializeWrapper();
                    serializeStudent.Message = message;
                    serializeStudent.Type = "Teacher";
                    String serializeStudentMessage = JsonConvert.SerializeObject(serializeStudent);
                    //发送消息给服务端
                    byte[] buffer = Encoding.UTF8.GetBytes(serializeStudentMessage);
                    BaseClass.getConnection().Send(buffer);
                    Console.WriteLine("老师信息已发送给服务端");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("发送老师信息出错:" + ex.Message);
                    break;
                }
                finally
                {
                    count ++;

                }
                //每隔1秒钟发送一次老师信息
                Thread.Sleep(1000);
            }

        }
    }
}

(2)学生端

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using Newtonsoft.Json;
using Entity;
using BaseClient;

namespace studentClient
{
    class studentClient
    {
        

        static void Main(string[] args)
        {
            Socket socket = BaseClass.getConnection();
            Thread thread = new Thread(new ParameterizedThreadStart(sendMessage));
            thread.Start(socket);
        }

        public static void sendMessage(Object Socket)
        {
            int count = 0;

            string name = "小明";
            int age

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值