C/S的客户端,采用HTTP(HTTPClient)传送一个数据块(大概10M)
Client启动了多个socket,多线程并发传输这个数据块的不同部分。
测试发现,客户端启动2个socket,和启动5个socket,所花的时间差不多。
疑问:
1、一般情况,多少个socket并发最好,这个数据一般怎么得出?
2、对于一个client,和server最大达传输速度,如何得到(假设server资源是无限的)
问题补充我的理解:一个socket代表一个IO,多线程应该有意义吧,比如用flashget下载数据,用多线程同时下载文件的不同部分,我的理解不知对不对?
问题补充:<div class="quote_title">niumd 写道</div><div class="quote_div">线程数和CPU,线程调度也有关系;启动多少个需要你自己测试得出;
<br />不知道为何使用socket发送10M的数据块,楼主可否说下应用,也许有更好的方法</div>
<br />使用场景如下,请LS看一下有没有更好的方法 ,谢谢~~~
<br />
<br />1、服务器同时支持C/S, B/S,为了简化服务开发,C和S也采用HTTP传输,采用 hession+httpclient方式
<br />2、现在C从S上下载、上传文件,文件大小在10K~300M(压缩后在1K~50M)之间,并发数在100左右
<br />3、为了提高下载和上传的速度,思路是在:在C端开多个socket同时从服务器上获取数据。
<br />
<br />ps:现在尝试使用apache的commons-fileupload来实现,但要实现断点续传,进度监控、下载的过程终止等功能,有一定的工作量,不知道有没有现成的第三方库?
<br />
<br />
问题补充:<div class="quote_title">mathfox 写道</div><div class="quote_div">你上传和下载使用多线程的瓶颈是不一样的。
<br />
<br />你上传你的上行网络已经满载了。
<br />
<br />你下载,一个线程连接的下载还未到你下行网络还未满载</div>
<br />
<br />在具体实现上,我可不可以这样理解:
<br />1、上传主要取决于客户端的IO、网速、服务器的处理能力,一个客户端使用一个线程(一个socket)处理就可以了。
<br />
<br />2、下载由于一个线程还未满载,可以使用多个线程来做。
<br />
<br />ps:刚才google了一下,这方面理论总结比较少,LS能否提供的详细点,谢谢~~~
相关推荐
Socket编程是计算机网络通信中的重要技术,特别是在C/S(Client-Server)架构中,它扮演着数据传输的核心角色。C/S结构是一种常见的网络应用模型,其中C代表客户端,S代表服务器端,通过Socket接口实现两者之间的...
在C/S模式下,客户端通常使用SELECT或Poll等I/O复用技术来监控多个Socket的就绪状态,这样可以同时处理多个连接,提高系统效率。在本案例中,客户端使用SELECT进行接收,当有数据可读时,SELECT返回,客户端便可以...
通用数据传输socket构架源码 源码描述: 一、源码特点 1、此软件的基本思想是为了建立一套简单稳点可多负载的架构,通用数据通讯构建,设计基于TCP通信的交互框架。目前以达到3.0版本,可规范先后台交互处理,可...
C/S(Client/Server)架构是一种常见的软件系统架构模式,其中客户端(Client)与服务器端(Server)通过网络进行通信,以实现数据的交互和处理。在这个架构中,客户端是用户直接操作的部分,负责用户界面的展示和...
在这个“TCP协议C/S模式上传下载”项目中,我们将探讨如何构建一个C/S架构的文件传输系统,实现文件的上传和下载功能,同时关注客户端的进度显示和中断操作,以及提高传输效率。 首先,客户端/服务器(C/S)模式是...
实现C/S结构的Java QQ聊天程序是一个综合性的任务,涵盖了网络编程、多线程处理、数据传输协议设计以及图形用户界面等多个关键领域。通过这个项目,开发者不仅能学习到Java语言的基础应用,还能深入理解分布式系统的...
在Linux环境下,C语言的socket编程主要涉及以下几个核心概念: - 创建socket:使用`socket()`函数创建一个socket描述符,指定协议类型(如TCP或UDP)。 - 绑定与监听:使用`bind()`函数将socket与特定的IP地址和...
通过分析和学习这个示例,可以更好地理解TCP/IP C/S模型的工作原理以及C语言如何实现网络编程。 开发过程中,还需要注意错误处理,比如网络中断、服务器未响应等异常情况,以及性能优化,如缓冲区大小的设置、并发...
1. 实时性:聊天软件需要实现实时通信,这就要求C/S模式下的数据传输要有高效率和低延迟。 2. 可靠性:消息传递必须保证可靠,即使在网络不稳定的情况下,也能确保信息的准确到达。 3. 安全性:考虑到隐私保护,...
5. **多路复用技术**:在C语言中,`select()`函数是多路复用I/O的一种方式,它可以监控多个socket,等待任意一个准备好读写时进行处理。这对于处理多个并发连接非常有用。 ```c fd_set readfds; FD_ZERO(&...
【考试系统(C/S模式)】是客户端/服务器(Client/Server)架构的典型应用,主要涉及计算机软件设计、数据库管理、网络通信等多个IT领域的知识。在这个系统中,客户端(通常为用户界面)与服务器端(包含业务逻辑和...
Java Socket实现的简单点对点聊天软件是一种基于网络通信的C/S(客户端/服务器)架构的应用。在这个系统中,服务器端作为一个中央节点,接收并转发客户端之间的消息,而客户端则负责用户交互,发送和接收聊天内容。...
客户端安装在需要监控的设备上,收集数据并发送到服务器端;服务器端负责接收、存储和分析这些数据,并提供用户界面展示监控结果。 在Java C/S结构中,客户端部分通常使用Java Swing或JavaFX来创建图形用户界面,与...
当有客户端连接请求时,服务器端使用`accept()`函数接收连接,这会创建一个新的Socket描述符用于与客户端通信。 ```c int client_sock = accept(socket_desc, (struct sockaddr *)&client, &client_len); ``` 6...
Linux网络编程是构建高效、高并发服务器的基础,其中的核心概念之一是socket编程。Socket是操作系统提供的接口,允许应用程序进行网络通信。在这个过程中,理解和运用网络基础协议至关重要。 协议是网络通信的规则...
Socket编程涉及到网络套接字的创建、绑定、监听、连接和数据传输等一系列操作。 总的来说,网络编程是构建分布式系统的关键,理解协议和设计模式有助于开发者选择合适的解决方案,以满足不同应用场景的需求。无论是...
综上所述,"TCP协议文件传输图片和视频 C控制台程序"项目涵盖了网络编程基础、C/S架构实现、Windows Socket API应用以及文件传输策略等多个方面,是学习和实践网络通信技能的一个良好实例。通过深入理解和实现这个...
标题描述的文档是关于使用C++或C#通过SOCKET开发一个简单的客户端/服务器(C/S)文本传输程序的教程。这个实验的目标是创建一个允许客户端发送文本到服务器,而服务器则接收并显示这些文本的系统。实验在Windows 8.1...