C# TCP Socket编程:构建简单客户端
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace UdpClientDemo_Client
{
internal class User
{
TcpClient locaClient;
Action<String> ShowMsg;
BinaryWriter bw;
BinaryReader br;
String username;
// 使用指定的IP地址、端口号和用户名创建一个User类的实例
public User(Action<string> ShowMsg, string remoteIP, int remotePort, String username)
{
this.ShowMsg = ShowMsg;
this.username = username;
locaClient = new TcpClient();
locaClient.Connect(remoteIP, remotePort);
NetworkStream ns = locaClient.GetStream();
bw = new BinaryWriter(ns);
br = new BinaryReader(ns);
StartJS(this.username);
}
// 使用现有的TcpClient对象创建一个User类的实例
public User(Action<String> ShowMsg, TcpClient remote_client)
{
this.ShowMsg = ShowMsg;
locaClient = remote_client;//!!!!!!!!!!
NetworkStream ns = locaClient.GetStream();
bw = new BinaryWriter(ns);
br = new BinaryReader(ns);
}
// 启动一个异步任务来接收服务器发送的消息
private void StartJS(String name)
{
String remoteEp = locaClient.Client.RemoteEndPoint.ToString() + '>' + name;
Task.Run(() =>
{
while (true)
{
try
{
String sss = br.ReadString();
ShowMsg(remoteEp + '>' + sss);
}
catch
{
ShowMsg('服务端掉线了!');
break;
}
}
});
}
// 向服务器发送消息
public void Send(String str)
{
bw.Write(str);
}
// 向服务器发送消息,并在消息中包含用户名
public void Send(String str, String name)
{
bw.Write(str + name);
}
}
}
代码解释:
这段代码定义了一个名为 User 的类,用于表示一个客户端用户。它使用 TCP Socket 与服务器进行通信。
locaClient: 一个TcpClient对象,表示与服务器的连接。ShowMsg: 一个Action<String>委托,用于将消息显示到界面上。bw: 一个BinaryWriter对象,用于向服务器发送数据。br: 一个BinaryReader对象,用于从服务器接收数据。username: 一个字符串,存储客户端用户名。
构造函数:
User(Action<string> ShowMsg, string remoteIP, int remotePort, String username): 使用指定的IP地址、端口号和用户名创建一个User对象。User(Action<String> ShowMsg, TcpClient remote_client): 使用现有的TcpClient对象创建一个User对象。
方法:
StartJS(String name): 启动一个异步任务来接收服务器发送的消息。Send(String str): 向服务器发送消息。Send(String str, String name): 向服务器发送消息,并在消息中包含用户名。
工作流程:
- 创建一个
User对象,并指定服务器的IP地址、端口号和用户名。 - 调用
StartJS()方法启动一个异步任务来接收服务器发送的消息。 - 使用
Send()方法向服务器发送消息。 - 当接收到服务器发送的消息时,
StartJS()方法会调用ShowMsg()委托将消息显示到界面上。
注意:
- 这段代码只是一个简单的示例,实际应用中可能需要根据具体需求进行修改。
- 为了确保代码的健壮性,应该添加错误处理机制。
原文地址: https://www.cveoy.top/t/topic/dnq4 著作权归作者所有。请勿转载和采集!