C# socket System.OutOfMemoryException

newlovedew newlovedew 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

private void ListenClientConnect(object ServerSocket)
{
while (true)
{
try
{
Socket socket = (Socket)ServerSocket;
Socket clientSocket = socket.Accept();
Thread receiveThread = new Thread(receivesocketmessage);
receiveThread.IsBackground = true;
receiveThread.Start(clientSocket);
}
catch (Exception er) { Wlog wlog = new Wlog(); wlog.errlog("ListenClientConnect" + " " + er.Message); }
Thread.Sleep(10);
}
}
private void receivesocketmessage(object clientSocket)
{
Socket myClientSocket = (Socket)clientSocket;
byte[] result=new byte[1024];
DateTime dt = DateTime.Now;
while (true)
{
try
{
if ((DateTime.Now - dt).TotalSeconds > 70)
{
myClientSocket.Shutdown(SocketShutdown.Both);
myClientSocket.Close();
break;
} //根据超时时间结束线程
int receiveNumber = 0;
//通过clientSocket接收数据
try
{
receiveNumber = myClientSocket.Receive(result);
}
catch (Exception er)
{
Wlog wlog = new Wlog(); wlog.errlog("myClientSocket.Receive " + er.Message);
myClientSocket.Shutdown(SocketShutdown.Both);
myClientSocket.Close();
break;
}
//Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
string str = "";
if (receiveNumber > 0)
{
dt = DateTime.Now;
//数据处理过程
}
}
catch (Exception er) { Wlog wlog = new Wlog(); wlog.errlog("receivesocketmessage "+er.Message); }
Thread.Sleep(80);
}
}

错误:ListenClientConnect 引发类型为“System.OutOfMemoryException”的异常。
请问各位大神,这怎么解决?
...全文

相关推荐

Unity+ASP.NET Socket联机游戏开发实战指南

TCP socket是实时多人游戏网络通信的底层基石,其核心在于连接管理、字节流处理、跨平台序列化与线程协同。理解粘包/半包原理、心跳保活机制、二进制协议设计及Unity主线程与Socket异步IO的桥接方式,是构建稳定联机逻辑的前提。这类技术广泛应用于局域网对战、教育VR、轻量MMO原型验证等场景,尤其适合需规避Photon/Mirror黑盒、直面网络本质的Unity开发者。本文以可运行的ASP.NET+Unity Socket联机Demo为载体,深入拆解从‘能连上’到‘连得稳’的关键七道工程坎。

weixin_34195142

C# Stream底层原理与高性能实践:从Dispose到Pipe的深度解析

Stream是.NET I/O编程的核心抽象,本质是字节序列的契约式访问接口,其性能与稳定性取决于对CanSeek、CanTimeout等能力契约的准确理解。底层机制如缓冲区生命周期、异步状态机开销、Dispose与IAsyncDisposable协同、以及Pipelines零拷贝模型,共同决定高并发文件处理、网络传输和大内存操作的实际表现。掌握FileStream缓冲区为何8KB最优、NetworkStream超时需Socket层控制、MemoryStream容量爆炸规避方法,可显著降低GC压力、句柄泄漏

diaojin6880

工控上位机跑几天就莫名崩溃?8大高频根因盘点与C#工程化排查方案

做工控上位机开发这些年,见过最磨人的问题不是编译报错,也不是现场连不上设备,而是“跑几天就崩”——刚上线前两天一切正常,第三天凌晨莫名退出,重启后又能跑几天,日志里要么空空如也,要么只有一堆无关信息,查问题如同大海捞针。很多新手遇到这种情况第一反应是“电脑中毒了”“系统不稳定”,实际上90%以上都是代码里的累积型问题。即时Bug一跑就出,好定位;但资源泄漏、线程堆积、异常逃逸这类问题,需要时间累积到阈值才会爆发,所以才会“跑几天才崩”。

威哥说编程

C#性能真相:从内存分配到SIMD优化的六大核心维度

C#作为现代通用编程语言,其性能表现常被误解为‘天生缓慢’,实则取决于对CLR运行时机制的理解与运用。本文围绕内存分配、垃圾回收、JIT编译、数值计算、IO模型和并发控制六大基础技术维度展开,深入解析托管语言在真实生产环境中的性能边界。重点涵盖Span<T>零拷贝、Vector<T>自动向量化、分代GC调优、Tiered JIT预热等关键能力,揭示C#在高并发Web服务、实时音视频处理及金融系统中达成亚毫秒级延迟的技术路径。内容兼顾原理深度与工程落地,适用于.NET开发者进行性能诊断、瓶颈定位与架构决策。

unixboy_xujf

C# Stream深度解析:内存、生命周期与跨平台I/O契约

Stream是.NET中连接托管代码与操作系统I/O子系统的核心抽象,远不止Read/Write基础方法——它承载着内存管理、资源生命周期、异步调度与跨平台兼容性等多重契约。理解其CanRead/CanWrite的动态语义、Position操作的底层开销、Dispose()对句柄与数据完整性的决定性影响,是避免OutOfMemoryException、句柄泄漏和数据截断的关键。在高并发文件处理、HTTP流式响应、加密压缩管道等场景中,Stream的缓冲策略、所有权移交和异步实现路径(IOCP vs 线程池伪

aobai7842
评论 8
收藏 已收藏
分享
返回顶部
newlovedew
C# 111,129 成员 642,538 内容