资讯详情

资讯详情

C#中的模拟服务器与客户端建立连接

创建一个控制台项目命名为Server模拟服务器端。在同一个解决方案下添加新项目命名为Client模拟客户端。在服务器端与客户端之间建立TCP连接并在客户端发送消息在服务器端输出。Server项目具体要求1.在Server项目中用本机端点建立TcpListener对象进行监听。2.在客户端发出连接请求后接收请求获取远程连接客户端对象。3.接收客户端发送过来的正方形边长并显示。4.计算正方形的面积回复运算结果并显示。5.最后关闭该通信。Client项目具体要求1.建立TcpClient对象。2.与服务器端建立连接。3.连接成功后向服务端发送正方形的边长并显示。4.接收服务器端发送的运算结果并显示。5.最后关闭该通信。实现效果如下private static void Main(string[] args){TcpClient tc new TcpClient(); //1 连接服务器tc.Connect(127.0.0.1, 5001);if (tc.Connected) //判断服务器是否连接成功Console.WriteLine(服务器连接成功);Console.Write(请输入第一个数字);// string msg Console.ReadLine(); //4通过网络把输入的文本传给服务器NetworkStream ns tc.GetStream();StreamWriter sw new StreamWriter(ns);//发送给服务器第一个数据sw.WriteLine(Console.ReadLine());sw.Flush();Console.WriteLine(请输入运算符-*);StreamWriter sw2 new StreamWriter(ns);//发送给服务器第二个数据sw2.WriteLine(Console.ReadLine());sw2.Flush();Console.WriteLine(请输入第二个数);StreamWriter sw3 new StreamWriter(ns);//发送给服务器第三个数据sw3.WriteLine(Console.ReadLine());sw3.Flush();StreamReader sr new StreamReader(ns); //接受服务区发来的第一个数据 //6Console.WriteLine(服务器说 sr.ReadLine());sr.Close();//sr2.Close();//sr3.Close();sw.Close();sw2.Close();sw3.Close();ns.Close();tc.Close();Console.ReadKey();}private static void Main(string[] args){IPAddress ip IPAddress.Parse(127.0.0.1);//2 接受客户端连接TcpListener t1 new TcpListener(ip, 5001);t1.Start();Console.WriteLine(服务器启动等待连接。。。);TcpClient tc t1.AcceptTcpClient(); //3 显示客户端连接情况if (tc ! null)Console.WriteLine(客户端连接成功等待客户端输入);NetworkStream ns tc.GetStream(); //这是个管道 //5StreamReader sr new StreamReader(ns);//接受客户端发的第一个数据string msg sr.ReadLine();Console.WriteLine(客户端说 msg);StreamReader sr2 new StreamReader(ns);//接收客户端发的第二个数据string msg2 sr2.ReadLine();//22222Console.WriteLine(客户端说 msg2);StreamReader sr3 new StreamReader(ns);//接受客户端发的第三个数据string msg3 sr3.ReadLine();//22222Console.WriteLine(客户端说 msg3);Console.Write(请回复); //回复客户端的第一个数据 //7StreamWriter sw new StreamWriter(ns);if (msg2 ){sw.WriteLine(计算结果为{0}, Convert.ToInt32(msg) Convert.ToInt32(msg3));sw.Flush();}else if (msg2 -){sw.WriteLine(计算结果为{0}, Convert.ToInt32(msg) - Convert.ToInt32(msg3));sw.Flush();}else if (msg2 *){sw.WriteLine(计算结果为{0}, Convert.ToInt32(msg) * Convert.ToInt32(msg3));sw.Flush();}else if (msg2 /){try{sw.WriteLine(计算结果为{0}, Convert.ToInt32(msg) / Convert.ToInt32(msg3));sw.Flush();}catch (Exception){sw.WriteLine(输入数据有错误请检查后重新输入);sw.Flush();}}sw.Close();sr.Close();sr2.Close();ns.Close();tc.Close();t1.Stop();Console.ReadKey();}
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →