C# UDP 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_Server
{
internal class SUser
{
TcpClient locaClient;
Action<String> ShowMsg;
BinaryWriter bw;
BinaryReader br;
String susername;
/*
public SUser(Action<String> ShowMsg, String remoteIP, int remotePort)
{
this.ShowMsg = ShowMsg;
locaClient = new TcpClient();
locaClient.Connect(remoteIP, remotePort);
NetworkStream ns = locaClient.GetStream();
bw = new BinaryWriter(ns);
br = new BinaryReader(ns);
StartJS();
}*/
public SUser(Action<String> ShowMsg, String remoteIP, int remotePort, string susername)
{
this.ShowMsg = ShowMsg;
this.susername = susername;
locaClient = new TcpClient();
locaClient.Connect(remoteIP, remotePort);
NetworkStream ns = locaClient.GetStream();
bw = new BinaryWriter(ns);
br = new BinaryReader(ns);
StartJS(this.susername);
}
public SUser(Action<String> ShowMsg, TcpClient remote_client)
{
this.ShowMsg = ShowMsg;
locaClient = remote_client;//!!!!!!!!!!
NetworkStream ns = locaClient.GetStream();
bw = new BinaryWriter(ns);
br = new BinaryReader(ns);
}
public SUser(Action<String> ShowMsg, TcpClient remote_client, string susername)
{
this.ShowMsg = ShowMsg;
locaClient = remote_client;//!!!!!!!!!!
this.susername = susername;
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);
}
}
}
这段代码定义了一个名为 'SUser' 的类,用于管理C#应用程序中服务器与客户端之间的通信。它使用了TCP协议进行通信,并提供以下功能:
- 连接建立: 通过构造函数,可以传入远程IP地址、端口号和用户名来建立与服务器的连接。
- 数据发送: 'Send' 方法允许向服务器发送字符串数据。
- 数据接收: 'StartJS' 方法在一个单独的线程中持续监听来自服务器的消息。
- 消息处理: 收到服务器消息后,会调用 'ShowMsg' 委托来处理和显示消息。
- 异常处理: 'StartJS' 方法包含异常处理机制,当服务器断开连接时,会显示提示信息。
该代码段可以作为开发C#网络应用程序的参考,特别是需要实现服务器-客户端通信功能的场景。你可以根据实际需求修改和扩展此代码。
原文地址: https://www.cveoy.top/t/topic/dnEO 著作权归作者所有。请勿转载和采集!