C#基于socket的TCP
时间: 2023-08-07 20:06:02 浏览: 80
C#基于Socket的TCP编程可以用于实现网络通信。你可以使用System.Net命名空间中的TcpListener和TcpClient类来创建TCP服务器和客户端。
要创建一个TCP服务器,你可以使用TcpListener类。以下是一个简单的示例:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class TCPServer
{
static void Main()
{
TcpListener server = null;
try
{
// 设置服务器的IP地址和端口号
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 12345;
// 创建TCP监听器
server = new TcpListener(ipAddress, port);
// 启动监听器
server.Start();
Console.WriteLine("服务器已启动...");
// 接受客户端连接
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("客户端已连接...");
// 获取客户端的网络流
NetworkStream stream = client.GetStream();
// 接收和发送数据
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
// 将接收到的数据转换为字符串
string data = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("接收到数据:" + data);
// 将数据发送回客户端
byte[] response = Encoding.ASCII.GetBytes("服务器收到了你的消息");
stream.Write(response, 0, response.Length);
Console.WriteLine("已向客户端发送响应");
}
// 关闭连接
client.Close();
}
catch (Exception e)
{
Console.WriteLine("发生错误: " + e.ToString());
}
finally
{
// 停止监听器
server.Stop();
}
}
}
```
要创建一个TCP客户端,你可以使用TcpClient类。以下是一个简单的示例:
```csharp
using System;
using System.Net.Sockets;
using System.Text;
class TCPClient
{
static void Main()
{
try
{
// 设置服务器的IP地址和端口号
string serverIP = "127.0.0.1";
int port = 12345;
// 创建TCP客户端
TcpClient client = new TcpClient(serverIP, port);
Console.WriteLine("已连接到服务器...");
// 获取网络流
NetworkStream stream = client.GetStream();
// 发送数据给服务器
string message = "Hello, server!";
byte[] data = Encoding.ASCII.GetBytes(message);
stream.Write(data, 0, data.Length);
Console.WriteLine("已发送消息给服务器");
// 接收服务器的响应
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("服务器响应:" + response);
// 关闭连接
client.Close();
}
catch (Exception e)
{
Console.WriteLine("发生错误: " + e.ToString());
}
}
}
```
以上代码只是一个基本示例,你可以根据需要进行修改和扩展。希望能对你有所帮助!如果还有其他问题,请继续提问。
阅读全文