社区
C#
帖子详情
请教C#的Socke高手?? C#做的Socket客户端如何用已连接的Socke接收服务器定时传回的信息????不能阻塞客户端。
peterlanhaijun
2006-04-28 04:05:22
小弟用C#做的Socket客户端,连接上服务器后,首先向服务器发一个设置命令,服务器收到设置命令后就根据客户的请求定时地向客户端返回信息。
问题就是我的客户端用怎样的代码来接收服务器定时传回的数据。并且不能阻塞客户程序,因为客户端还要同时作其他工作。
请教C#的Socke高手????
...全文
244
3
打赏
收藏
请教C#的Socke高手?? C#做的Socket客户端如何用已连接的Socke接收服务器定时传回的信息????不能阻塞客户端。
小弟用C#做的Socket客户端,连接上服务器后,首先向服务器发一个设置命令,服务器收到设置命令后就根据客户的请求定时地向客户端返回信息。 问题就是我的客户端用怎样的代码来接收服务器定时传回的数据。并且不能阻塞客户程序,因为客户端还要同时作其他工作。 请教C#的Socke高手????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
灰太狼
2006-05-10
打赏
举报
回复
開一個線程,把receive放到裡面,不就行了嗎?例如:
private void ReceiveThread()
{
while(true)
{
ReceiveSocket.receive(bytes);
str=Encoding.default.Getstring(bytes);
MessageBox.Show(str);
}
}
呵呵,手寫的,大小寫不一定正確,但是思路就是這樣
泡沫游走
2006-04-28
打赏
举报
回复
可以在客户端多开一监视线程
peterlanhaijun
2006-04-28
打赏
举报
回复
自己顶一下
c#
网络编程聊天室
言
C#
网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。 本文是该系列第一篇,主要讲述了基于套接字(
Socke
t
)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、
连接
远程服务端;第二篇讲述了一个简单的范例:从
客户端
传输字符串到服务端,服务端
接收
并打印字符串,将字符串改为大写,然后再将字符串回发到
客户端
,
客户端
最后打印
传回
的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传输的方式来完成和第二篇同样的功能;第四篇则演示了如何在
客户端
与服务端之间收发文件;第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,实际上是对前面知识的一个综合应用。 与本文相关的还有一篇文章是:
C#
编写简单的聊天程序,但这个聊天程序不及本系列中的聊天程序功能强大,实现方式也不相同。
c#
网络编程
主要讲述了基于套接字(
Socke
t
)进行网络编程的基本概念,其 中包括 TCP 协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、
连接
远程服务端;第二篇讲述了一个简单的范例:从
客户端
传输字符串到服务端,服务端
接收
并 打印字符串,将字符串改为大写,然后再将字符串回发到
客户端
,
客户端
最后打印
传回
的字 符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传 输的方式来完成和第二篇同样的功能;第四篇则演示了如何在
客户端
与服务端之间收发文件; 第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,实际上是对前面知识的一个综 合应用。
RRQM
Socke
t
网络通信框架-.net
RRQM
Socke
t
是一个整合性的、超轻量级的网络通信服务框架。它具有高并发
连接
、高并发处理、事件订阅、插件式扩展、多线程处理、内存池、对象池等特点,让使用者能够更加简单的、快速的搭建网络框架。在发送效率上,同步发送可达20w/s,异步发送可达60w/s。
服务器
在
接收
、处理效率上因线程数量而定。 支持环境: .NETFramework4.5及以上。 .NETCore3.1及以上。 .NETStandard2.0及以上。 支持框架: WPF Winform Blazor Xamarin Mono Unity 其他(即所有
C#
系) 特点: 1、对象池 对象池在RRQM
Socke
t
有很多应用,最主要的两个就是
连接
对象池和处理对象池。
连接
对象池就是当
客户端
成功
连接
时,首先会去
连接
对象池中找Tcp
Socke
t
Client,然后没有的话,才会创建。如果哪个
客户端
掉线了,它的Tcp
Socke
t
Client就会被回收。这也就是ID重用的原因。 然后就是处理对象池,在RRQM
Socke
t
中,
接收
数据的线程和IOCP内核线程是分开的,也就是比如说
客户端
给
服务器
发送了1w条数据,但是
服务器
收到后处理起来很慢,那传统的iocp肯定会放慢
接收
速率,然后通知
客户端
的tcp窗口,发生拥塞,然后让
客户端
暂缓发送。但是在RRQM
Socke
t
中会把收到的数据通过队列全都存起来,首先不影响iocp的
接收
,同时再分配线程去处理收到的报文
信息
,这样就相当于一个“泄洪湖泊”,能很大程度的提高处理数据的能力。 2、多线程 由于有处理对象池的存在,使多线程处理变得简单。在
客户端
连接
完成时,会自动分配该
客户端
辅助类(Tcp
Socke
t
Client)的消息处理逻辑线程,假如
服务器
线程数量为10,则第一个
连接
的
客户端
会被分配到0号线程中,第二个
连接
将被分配到1号线程中,以此类推,循环分配。当某个
客户端
收到数据时,会将数据排入当前线程所独自拥有的队列当中,并唤醒线程执行。 3、传统IOCP和RRQM
Socke
t
RRQM
Socke
t
的IOCP和传统也不一样的,以微软官方为例,使用MemoryBuffer开辟一块内存,然后均分,然后给每个会话分配一个区
接收
,等收到数据以后,再复制一份,然后把复制的数据抛出处理。而RRQM
Socke
t
是每次
接收
之前,从内存池拿一个可用内存块,然后直接用于
接收
,等收到数据以后,直接就把这个内存块抛出去了,这样就避免了复制操作,虽然只是细小的设计,但是在传输1000w次64kb的数据时,性能相差了10倍。所以也是基于此,文件传输时效率才会高。 4、数据处理适配器 相信大家都使用过其他的
Socke
t
产品,例如HP
Socke
t
,Super
Socke
t
等,那么RRQM
Socke
t
在设计时也是借鉴了其他产品的优秀设计理念,数据处理适配器就是其中之一,但和其他产品的设计不同的是,RRQM
Socke
t
的适配器功能更加强大,它可以无视真实的数据,而模拟出想要的数据,例如:可以对数据进行预处理,从而解决数据分包。粘包的问题,也可以直接解析HTTP协议,经过适配器处理后
传回
一个HttpRequest对象等。 5、粘包、分包解决 在RRQM
Socke
t
中处理TCP粘包、分包问题是非常简单的。只需要更改不同的数据处理适配器即可。例如:使用固定包头,只需要给Tcp
Socke
t
Client和TcpClient赋值FixedHeaderDataHandlingAdapter的实例即可。同样对应的处理器也有固定长度、终止字符分割等。
C#
Socke
t
通信的
服务器
与
客户端
最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的。因此,浏览器访问Web
服务器
的过程必须先有“
连接
建立”的发生。 而有人或许会问:众所周知,HTTP协议有两大特性,一个是“无
连接
”性,一个是“无状态”性。这里的“无
连接
”岂不是跟上面的说法有冲突?其实这里并没有矛盾,只是人们对“
连接
”这个词的理解有差异。首先我们来看一下浏览器...
C#
Socke
t
实现Http WEB
服务器
C#
Socke
t
实现Http WEB
服务器
2010年03月22日 WWW的工作基于客户机/
服务器
计算模型,由Web 浏览器(客户机)和Web
服务器
(
服务器
)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:
连接
,请求,应答。根据上述HTTP协议的作用原理,本文实现了GET请求的Web
服务器
程序的方法,通过创建TcpListener类对象,监...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章