C#——使用TcpListener和TcpClient实现服务器端和客户端通信的小程序

控制台程序2个

1.TCPServer的控制台应用程序,作为服务端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;//
using System.Net.Sockets;
namespace TcpServer
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpListener server = null;
            Console.Write("请输入监听的端口号:");
            string strPort = Console.ReadLine();
            try
            {
                int port = Convert.ToInt32(strPort);
                IPEndPoint listenPort = new IPEndPoint(IPAddress.Any, port);
                server = new TcpListener(listenPort);//初始化TcpListener的新实例
                server.Start();//开始监听客户端的请求
                Byte[] bytes = new Byte[256];//缓存读入的数据
                String data = null;
                while (true)//循环监听
                {
                    Console.Write("服务已启动");
                    TcpClient client = server.AcceptTcpClient();
                    Console.WriteLine("已连接!");
                    data = null;
                    NetworkStream stream = client.GetStream();//获取用于读取和写入的流对象
                    int i;
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        //将借宿字节的数据转换成一个UTF8字符串
                        data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
                        Console.WriteLine("接收消息:{0}", data);
                        Console.Write("发送消息:");
                        data = Console.ReadLine();//服务器发送消息
                        byte[] msg = System.Text.Encoding.UTF8.GetBytes(data);
                        stream.Write(msg, 0, msg.Length);
                    }
                    client.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                server.Stop();
            }
            Console.WriteLine("\n按任意键退出...");

        }
    }
}
2.TcpClientes的控制台应用程序,作为客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace TcpClients
{
    class Program
    {
        static TcpClient client = null;
        static NetworkStream stream = null;
        static void Main(string[] args)
        {
            Console.Write("请输入服务器IP地址:");
            string strIp = Console.ReadLine();
            Console.Write("请输入服务器监听的端口号:");
            string strPort = Console.ReadLine();
            int port = Convert.ToInt32(strPort);
            Connect(strIp,port);//连接服务器
            do
            {
                Console.Write("发送消息:");
                string message = Console.ReadLine();
                SentAndReceived(message);
                if (Console.ReadLine().ToUpper() == "N") break;
            } while (true);
            if (stream != null) stream.Close();
            if (client != null) client.Close();
            Console.WriteLine("\n按任意键退出...");
            Console.Read();
        }
        static void Connect(string server, int port)
        {
            try {
                client = new TcpClient(server,port);
            }
            catch(Exception e) {
                Console.WriteLine(e.Message);
            }
        }
        static void SentAndReceived(string message)
        {
            Byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
            stream = client.GetStream();
            stream.Write(data,0,data.Length);
            data = new Byte[1024];
            String responseData = String.Empty;
            int bytes = stream.Read(data,0,data.Length);
            responseData = System.Text.Encoding.UTF8.GetString(data,0,bytes);
            Console.WriteLine("接收消息:{0}",responseData);
        }
    }
}
3.运行服务器端程序

4.运行客户端程序

C#——使用TcpListener和TcpClient实现服务器端和客户端通信的小程序_第1张图片

5.运行结果

 

 

你可能感兴趣的:(C#——使用TcpListener和TcpClient实现服务器端和客户端通信的小程序)