使用C#编写TCP服务器和客户端通信程序

作者:佚名 上传时间:2023-04-17 运行软件:Visual Studio 2019 软件版本:.NET Framework 4.8 版权申诉

本文主要介绍如何使用C#编写TCP服务器和客户端通信程序。C#是一种通用型、现代化的编程语言,它提供了丰富的网络编程库,可以方便地进行网络编程。

C#网络编程实例

我们首先来看一个简单的C#网络编程实例,该实例实现了一个简单的TCP服务器和客户端通信。以下是服务器端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Server {
    static void Main(string[] args) {
        TcpListener server = null;
        try {
            // 创建TCP服务器
            Int32 port = 8000;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
            server = new TcpListener(localAddr, port);

            // 开始监听
            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) {
                    data = Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine("接收到数据:{0}", data);

                    // 发送响应数据
                    byte[] msg = Encoding.ASCII.GetBytes(data);
                    stream.Write(msg, 0, msg.Length);
                    Console.WriteLine("响应数据已发送:{0}", data);
                }

                // 关闭连接
                client.Close();
            }
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        } finally {
            server.Stop();
        }
    }
}

以下是客户端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Client {
    static void Main(string[] args) {
        TcpClient client = null;
        try {
            // 连接服务器
            Int32 port = 8000;
            IPAddress serverAddr = IPAddress.Parse("127.0.0.1");
            client = new TcpClient();
            client.Connect(serverAddr, port);
            Console.WriteLine("连接服务器成功!");

            // 发送数据
            String message = "Hello, TCP!";
            Byte[] data = Encoding.ASCII.GetBytes(message);
            NetworkStream stream = client.GetStream();
            stream.Write(data, 0, data.Length);
            Console.WriteLine("发送数据:{0}", message);

            // 接收响应数据
            data = new Byte[256];
            String responseData = String.Empty;
            Int32 bytes = stream.Read(data, 0, data.Length);
            responseData = Encoding.ASCII.GetString(data, 0, bytes);
            Console.WriteLine("接收到响应数据:{0}", responseData);
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        } finally {
            client.Close();
        }
    }
}

以上代码演示了如何使用C#编写一个简单的TCP服务器和客户端通信程序。

C# socket编程教程

C#提供了Socket类,可以方便地进行Socket编程。以下是一个简单的C# socket编程教程,演示了如何使用Socket类创建一个TCP客户端:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Client {
    static void Main(string[] args) {
        // 连接服务器
        Int32 port = 8000;
        IPAddress serverAddr = IPAddress.Parse("127.0.0.1");
        IPEndPoint remoteEP = new IPEndPoint(serverAddr, port);
        Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        client.Connect(remoteEP);
        Console.WriteLine("连接服务器成功!");

        // 发送数据
        String message = "Hello, Socket!";
        Byte[] data = Encoding.ASCII.GetBytes(message);
        client.Send(data);
        Console.WriteLine("发送数据:{0}", message);

        // 接收响应数据
        data = new Byte[256];
        String responseData = String.Empty;
        Int32 bytes = client.Receive(data);
        responseData = Encoding.ASCII.GetString(data, 0, bytes);
        Console.WriteLine("接收到响应数据:{0}", responseData);

        // 关闭连接
        client.Shutdown(SocketShutdown.Both);
        client.Close();
    }
}

C#客户端服务器通信代码

接下来,我们来看一下如何使用C#编写一个TCP客户端和服务器端通信的代码。以下是服务器端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

class Server {
    static void Main(string[] args) {
        TcpListener server = null;
        try {
            // 创建TCP服务器
            Int32 port = 8000;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
            server = new TcpListener(localAddr, port);

            // 开始监听
            server.Start();

            // 处理连接请求
            while (true) {
                Console.Write("等待连接... ");

                // 接收连接请求
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("连接成功!");

                // 创建线程处理客户端请求
                Thread t = new Thread(new ParameterizedThreadStart(HandleClient));
                t.Start(client);
            }
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        } finally {
            server.Stop();
        }
    }

    static void HandleClient(Object obj) {
        TcpClient client = (TcpClient)obj;
        try {
            // 获取客户端数据
            Byte[] bytes = new Byte[256];
            String data = null;
            NetworkStream stream = client.GetStream();
            int i;
            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) {
                data = Encoding.ASCII.GetString(bytes, 0, i);
                Console.WriteLine("接收到数据:{0}", data);

                // 发送响应数据
                byte[] msg = Encoding.ASCII.GetBytes(data);
                stream.Write(msg, 0, msg.Length);
                Console.WriteLine("响应数据已发送:{0}", data);
            }

            // 关闭连接
            client.Close();
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        }
    }
}

以下是客户端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Client {
    static void Main(string[] args) {
        // 连接服务器
        Int32 port = 8000;
        IPAddress serverAddr = IPAddress.Parse("127.0.0.1");
        IPEndPoint remoteEP = new IPEndPoint(serverAddr, port);
        Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        client.Connect(remoteEP);
        Console.WriteLine("连接服务器成功!");

        // 发送数据
        String message = "Hello, TCP!";
        Byte[] data = Encoding.ASCII.GetBytes(message);
        client.Send(data);
        Console.WriteLine("发送数据:{0}", message);

        // 接收响应数据
        data = new Byte[256];
        String responseData = String.Empty;
        Int32 bytes = client.Receive(data);
        responseData = Encoding.ASCII.GetString(data, 0, bytes);
        Console.WriteLine("接收到响应数据:{0}", responseData);

        // 关闭连接
        client.Shutdown(SocketShutdown.Both);
        client.Close();
    }
}

以上代码演示了如何使用C#编写一个TCP客户端和服务器端通信的代码。

C# TCP通信开发案例

最后,我们来看一个完整的C# TCP通信开发案例,该案例实现了一个简单的聊天室程序。以下是服务器端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

class Server {
    static void Main(string[] args) {
        TcpListener server = null;
        try {
            // 创建TCP服务器
            Int32 port = 8000;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
            server = new TcpListener(localAddr, port);

            // 开始监听
            server.Start();
            Console.WriteLine("聊天室服务器已启动...");

            // 处理连接请求
            while (true) {
                Console.Write("等待连接... ");

                // 接收连接请求
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("连接成功!");

                // 创建线程处理客户端请求
                Thread t = new Thread(new ParameterizedThreadStart(HandleClient));
                t.Start(client);
            }
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        } finally {
            server.Stop();
        }
    }

    static void HandleClient(Object obj) {
        TcpClient client = (TcpClient)obj;
        try {
            // 获取客户端数据
            Byte[] bytes = new Byte[256];
            String data = null;
            NetworkStream stream = client.GetStream();
            int i;
            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) {
                data = Encoding.ASCII.GetString(bytes, 0, i);
                Console.WriteLine("接收到数据:{0}", data);

                // 广播消息
                BroadcastMessage(data);

                // 发送响应数据
                byte[] msg = Encoding.ASCII.GetBytes(data);
                stream.Write(msg, 0, msg.Length);
                Console.WriteLine("响应数据已发送:{0}", data);
            }

            // 关闭连接
            client.Close();
        } catch (Exception e) {
            Console.WriteLine("发生异常: {0}", e);
        }
    }

    static void BroadcastMessage(String message) {
        // 广播消息给所有客户端
        byte[] data = Encoding.ASCII.GetBytes(message);
        foreach (TcpClient client in clients) {
            NetworkStream stream = client.GetStream();
            stream.Write(data, 0, data.Length);
            Console.WriteLine("已向客户端发送消息:{0}", message);
        }
    }

    static ArrayList clients = new ArrayList();
}

以下是客户端的代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

class Client {
    static void Main(string[] args) {
        // 连接服务器
        Int32 port = 8000;
        IPAddress serverAddr = IPAddress.Parse("127.0.0.1");
        IPEndPoint remoteEP = new IPEndPoint(serverAddr, port);
        Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        client.Connect(remoteEP);
        Console.WriteLine("连接服务器成功!");

        // 启动接收线程
        Thread t = new Thread(new ThreadStart(ReceiveMessage));
        t.Start();

        // 发送数据
        while (true) {
            String message = Console.ReadLine();
            Byte[] data = Encoding.ASCII.GetBytes(message);
            client.Send(data);
        }
    }

    static void ReceiveMessage() {
        // 接收服务器消息
        byte[] data = new byte[1024];
        String responseData = String.Empty;
        while (true) {
            Int32 bytes = client.Receive(data);
            responseData = Encoding.ASCII.GetString(data, 0, bytes);
            Console.WriteLine("接收到消息:{0}", responseData);
        }
    }

    static Socket client = null;
}

以上代码演示了如何使用C#编写一个简单的聊天室程序,实现了TCP客户端和服务器端的通信。

C#网络编程实用技巧

最后,我们来总结一下C#网络编程实用技巧:

  • 使用TcpListener和TcpClient类进行TCP通信。
  • 使用Socket类进行Socket编程。
  • 使用线程处理客户端请求,可以提高服务器并发处理能力。
  • 使用ArrayList等数据结构来存储客户端连接,方便广播消息。
  • 使用Encoding类进行字符串编码转换,避免中文乱码问题。

希望这篇文章能够帮助大家更好地理解C#网络编程。

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
使用C#编写TCP服务器客户端通信程序
本文主要介绍如何使用C#编写TCP服务器和客户端通信程序。C#是一种通用型、现代化的编程语言,它提供了丰富的网络编程库,可以方便地进行网络编程。C#网络编程实例我们首先来看一个简单的C#网络编程实
.NET Framework 4.8
Visual Studio 2019
2023-04-17 08:12
C#编写TCP IP通信程序服务器客户端
C#编写的TCP/IP通信程序,包含服务器和客户端,简单易懂,有注释。初学者学习,不建议高手看
rar
0B
2020-05-08 06:01
C#编写TCP IP通信程序服务器客户端
C#编写的TCP/IP通信程序,包含服务器和客户端,简单易懂,有注释。 初学者学习,不建议高手看
RAR
0B
2018-12-09 00:51
TCP Socket编写客户端服务器通信程序
是用C#语言编写的客户端和服务器通信的控制台程序,需先启动服务器端的程序,再启动客户端的。
RAR
0B
2019-05-27 21:56
使用Erlang编写TCP服务器客户端通信
这个示例代码演示了如何使用Erlang编写一个简单的TCP服务器和客户端程序,以及如何在它们之间进行双向通信。实现方式使用Erlang的gen_tcp模块来创建和管理TCP连接,并使用Erlang的消
Erlang/OTP 22
Erlang/OTP
2023-04-25 03:06
使用C#实现TCP服务器客户端通信
本文将介绍如何使用C#编写TCP服务器和客户端的通信程序。主要包含以下内容:C# TCP服务器通信C# TCP客户端通信C# Socket编程C# 网络编程 示例代码代码释义总结C#
Visual Studio 2019
C#
2023-03-28 19:30
使用C语言编写TCP通信程序详解
本文详细介绍了使用C语言编写TCP通信程序的步骤及技巧,包括服务器/客户端程序框架的实现和示例源码。并在ubuntu 20.04中验证了程序的正确性。对初学者来说是一篇很好的学习资源。
pdf
484.52KB
2023-05-10 07:04
C#编写TCP客户端TCP服务端
语言:C#,功能:简易TCP客户端和TCP服务端。实现客户端与服务端的通信。实测:将服务端放在服务器上,客户端放在本地,通信正常。
RAR
0B
2018-12-20 06:46
TCP服务器客户端程序
包含了一个完整的TCP客户端和服务器端应用程序,可以直接在vc++6.0下运行
rar
0B
2019-01-13 17:11
C#网口通信TCP服务器客户端代码.zip
使用C# Winform实现了TCP的服务器和客户端(两个软件代码)
ZIP
126KB
2021-05-11 22:25