TCP网络程序实例——服务器端与客户端交互


实例02

客户端/服务器的交互

实例位置:光盘\Code\SL\14\02

视频位置:光盘\Video\14\




◆ 服务器端

创建服务器端项目Server,在Main方法中创建TCP连接对象;然后监听客户端接入,并读取接入的客户端IP地址和传入的消息;最后向接入的客户端发送一条信息。代码如下:

01  namespace Server

02  {

03      classProgram

04      {

05          static void Main()

06          {

07              int port = 888;                                              //端口 

08              TcpClient tcpClient;                                         //创建TCP连接对象

09              IPAddress[] serverIP = Dns.GetHostAddresses("127.0.0.1"); //定义IP地址

10              IPAddress localAddress = serverIP[0];                      //IP地址 

11              TcpListenertcpListener = new TcpListener(localAddress,port);//监听套接字

12              tcpListener.Start();                                         //开始监听 

13              Console.WriteLine("服务器启动成功,等待用户接入…");         //输出消息 

14              while (true)

15              {

16                  try

17                  {

18                      //每接收一个客户端则生成一个TcpClient

19                      tcpClient= tcpListener.AcceptTcpClient();

20                      NetworkStream networkStream =tcpClient.GetStream();//获取网络数据流

21                      //定义流数据读取对象

22                      BinaryReader reader =newBinaryReader(networkStream);

23                      //定义流数据写入对象

24                      BinaryWriter writer =newBinaryWriter(networkStream);

25                      while (true)

26                      {

27                          try

28                          {

29                              string strReader = reader.ReadString();//接收消息

30                              //截取客户端消息

31                              string[] strReaders = strReader.Split(newchar[] { ' ' });

32                              //输出接收的客户端IP地址

33                              Console.WriteLine("有客户端接入,客户IP" + strReaders[0]);

34                              //输出接收的消息

35                              Console.WriteLine("来自客户端的消息:" + strReaders[1]);

36                              string strWriter ="我是服务器,欢迎光临";//定义服务端要写入的消息

37                              writer.Write(strWriter);                  //向对方发送消息

38                          }

39                          catch

40                          {

41                              break;

42                          }

43                      }

44                  }

45                  catch

46                  {

47                      break;

48                  }

49              }

50          }

51      }

52  }

◆ 客户端

创建客户端项目Client,在Main方法中创建TCP连接对象,以指定的地址和端口连接服务器;然后向服务器端发送数据和接收服务器端传输的数据。代码如下:

01  namespace Client

02  {

03      classProgram

04      {

05   

06          static void Main(string[] args)

07          {

08              //创建一个TcpClient对象,自动分配主机IP地址和端口号

09              TcpClient tcpClient = newTcpClient();

10              //连接服务器,其IP和端口号为127.0.0.1888

11              tcpClient.Connect("127.0.0.1", 888);

12              if (tcpClient != null)                                         //判断是否连接成功

13              {

14                  Console.WriteLine("连接服务器成功");

15                  NetworkStream networkStream =tcpClient.GetStream();  //获取数据流

16                  BinaryReaderreader = new BinaryReader(networkStream);//定义流数据读取对象

17                  BinaryWriter writer = newBinaryWriter(networkStream); //定义流数据写入对象

18                  string localip="127.0.0.1";      //存储本机IP,默认值为127.0.0.1

19                  IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());//获取所有IP地址

20                  foreach (IPAddressipin ips)

21                  {

22                      if (!ip.IsIPv6SiteLocal)                       //如果不是IPV6地址

23                          localip =ip.ToString();                    //获取本机IP地址

24                  }

25                  writer.Write(localip + " 你好服务器,我是客户端"); //向服务器发送消息 

26                  while (true)

27                  {

28                      try

29                      {

30                          string strReader = reader.ReadString();  //接收服务器发送的数据 

31                          if (strReader != null)

32                          {

33                              //输出接收的服务器消息

34                              Console.WriteLine("来自服务器的消息:"+strReader);

35                          }

36                      }

37                      catch

38                      {

39                          break;                //接收过程中如果出现异常,退出循环 

40                      }

41                  }

42              }

43              Console.WriteLine("连接服务器失败");

44          }

45      }

46  }

首先运行服务器端,然后运行客户端,运行客户端后后的服务器端效果如图14.12所示,客户端运行效果如图14.13所示。

   

                             图14.12  客户端运行后的服务器端效果                                            图14.13  客户端运行效果

本文摘自明日科技出版的《零基础学C#》,转载请著名版权归属!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小禾斗斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值