创建一个控制台项目,命名为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); //接受服务区发来的第一个数据 //6
Console.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(); //这是个管道 //5
StreamReader sr = new StreamReader(ns);//接受客户端发的第一个数据
string msg = sr.ReadLine();
Console.WriteLine("客户端说:" + msg);
StreamReader sr2 = new StreamReader(ns);//接收客户端发的第二个数据
string msg2 = sr2.ReadLine();//22222
Console.WriteLine("客户端说:" + msg2);
StreamReader sr3 = new StreamReader(ns);//接受客户端发的第三个数据
string msg3 = sr3.ReadLine();//22222
Console.WriteLine("客户端说:" + msg3);
Console.Write("请回复"); //回复客户端的第一个数据 //7
StreamWriter 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();
}