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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值