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