我们来详细讲解一下“C# Socket的TCP通讯的实例代码”的完整攻略。
1. 引言
Socket 是实现网络通信协议的一种方法,可以实现不同计算机之间的数据交互。而 TCP 是面向连接的、可靠的、基于字节流的传输控制协议。在 C# 中,可以使用 Socket 类实现 TCP 协议的通讯。下面我们将介绍如何实现一个简单的 TCP 通讯程序。
2. 步骤
2.1 建立服务器端
服务器端需要监听端口,等待客户端的连接请求,并且在接受到客户端请求时,创建新的连接用于通讯。以下是服务器端的代码示例:
using System;
using System.Net;
using System.Net.Sockets;
class Server {
public static void Main() {
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8001;
TcpListener tcpListener = new TcpListener(ipAddress, port);
tcpListener.Start();
Console.WriteLine("服务器已启动,等待客户端连接...");
while (true) {
TcpClient tcpClient = tcpListener.AcceptTcpClient();
Console.WriteLine("客户端已连接:" + tcpClient.Client.RemoteEndPoint.ToString());
// 开启一个线程进行通讯
}
}
}
2.2 建立客户端
客户端需要连接服务器,并且在连接成功后,可以使用 Socket 进行通讯。以下是客户端的代码示例:
using System;
using System.Net;
using System.Net.Sockets;
class Client {
public static void Main() {
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8001;
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(ipAddress, port);
Console.WriteLine("已连接服务器:" + tcpClient.Client.RemoteEndPoint.ToString());
// 开启一个线程进行通讯
}
}
2.3 进行通讯
在建立好服务器端和客户端之后,需要在服务器端和客户端均开启一个线程进行通讯,以保证可以同时进行多个连接的通讯。以下是服务器端和客户端通讯的代码示例:
// 服务器端
TcpClient tcpClient = tcpListener.AcceptTcpClient();
Console.WriteLine("客户端已连接:" + tcpClient.Client.RemoteEndPoint.ToString());
NetworkStream networkStream = tcpClient.GetStream();
while (true) {
byte[] bytes = new byte[1024];
int bytesRead = networkStream.Read(bytes, 0, bytes.Length);
if (bytesRead > 0) {
string data = Encoding.Default.GetString(bytes, 0, bytesRead);
Console.WriteLine("收到客户端的消息:" + data);
// 回复消息
byte[] replyBytes = Encoding.Default.GetBytes("已收到消息:" + data);
networkStream.Write(replyBytes, 0, replyBytes.Length);
}
}
// 客户端
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(ipAddress, port);
Console.WriteLine("已连接服务器:" + tcpClient.Client.RemoteEndPoint.ToString());
NetworkStream networkStream = tcpClient.GetStream();
while (true) {
Console.WriteLine("请输入要发送的消息:");
string message = Console.ReadLine();
byte[] data = Encoding.Default.GetBytes(message);
networkStream.Write(data, 0, data.Length);
// 接收服务器端回复的消息
byte[] bytes = new byte[1024];
int bytesRead = networkStream.Read(bytes, 0, bytes.Length);
if (bytesRead > 0) {
string reply = Encoding.Default.GetString(bytes, 0, bytesRead);
Console.WriteLine("收到回复:" + reply);
}
}
3. 总结
本文主要介绍了如何使用 C# 中的 Socket 类实现 TCP 协议的通讯,并且提供了建立服务器端和客户端的示例代码。在实际应用中,需要注意数据的编码和解码,以及服务器端和客户端的并发性和安全性等问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Socket的TCP通讯的实例代码 - Python技术站