C++ Socket 实现的Http下载文件,下载速度非常慢

用C++ Socket 实现的多线程下载Http路径的文件,下载文件在国外服务器上,下载速度始终提不高只有几十KB/s,而用网页自带的下载工具,我看是用到了迅雷云加速达到了两百多kb/s,如何弄才能实现下载提速啊,各位大神赐教

1个回答

http://open.xunlei.com/wiki/tutorial.html

可以使用迅雷的SDK来实现。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++ Socket 实现的Http下载文件,下载速度非常慢

用C++ Socket 实现的多线程下载Http路径的文件,下载文件在国外服务器上,下载速度始终提不高只有几十KB/s,而用网页自带的下载工具,我看是用到了迅雷云加速达到了两百多kb/s,如何弄才能实现下载提速啊,各位大神赐教

C语言socket建立的简单文件传输问题

# 客户端发送文件 #include<stdio.h> #include<sys/stat.h> #include<sys/socket.h> #include<arpa/inet.h> #include<unistd.h> #include<fcntl.h> #include<string.h> int main(int argc,char **argv) { ssize_t i=1; char buf[512]; int fp; int ret; int socket_client; struct sockaddr_in addr_in; socket_client = socket(AF_INET,SOCK_STREAM,0);//创建套接字 if(socket_client<0){ perror("socket err"); return -1; } addr_in.sin_family = AF_INET; addr_in.sin_port = htons(9001); addr_in.sin_addr.s_addr = inet_addr("192.168.1.77"); ret = connect(socket_client,(struct sockaddr *)&addr_in,sizeof(addr_in));//链接 if(ret<0){ perror("connect err"); return -2; } scanf("%s",buf);//写入文件名 ret = send(socket_client,&buf,sizeof(buf),0);//发送文件名 if(ret<0){ perror("send err"); return -11; } fp = open(buf,O_RDONLY);//打开要发送的文件 if(fp<0){ fprintf(stderr,"open err\n"); return -1; } while(1){ if(i==0){ break; } memset(buf,0,sizeof(buf));//空间清0 i = read(fp,buf,sizeof(buf));//读文件到buf if(i<0){ perror("read err"); return -7; }else if(i==0){ break; } printf("%s\n",buf);//打印一遍用于观察 ret = send(socket_client,buf,sizeof(buf),0);//发送读取到的内容 if(ret<0){ perror("send err"); return -8; } printf("%d\n",ret);//打印发送的大小 sleep(1); } close(socket_client); return 0; } ## 服务器接收文件 #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/stat.h> #include<arpa/inet.h> #include<unistd.h> #include<string.h> #include<stdlib.h> #include<fcntl.h> int main(int aegc,char **argv) { char buf[512]; ssize_t i; int fp; int ret; int socket_sever; int socket_client; struct sockaddr_in addr_in; socket_sever = socket(AF_INET,SOCK_STREAM,0);//定义socket套接字 if(socket_sever<0){ perror("socket err"); return -1; } addr_in.sin_family = AF_INET; addr_in.sin_port = htons(9001); addr_in.sin_addr.s_addr = inet_addr("192.168.1.77"); ret = bind(socket_sever,(struct sockaddr *)&addr_in,sizeof(addr_in));//绑定 if(ret<0){ perror("bind err"); return -2; } ret = listen(socket_sever,5);//监听 if(ret<0){ perror("listen err"); return -3; } socket_client = accept(socket_sever,NULL,NULL);//建立链接 if(socket_client<0){ perror("accept err"); return -4; } ret = recv(socket_client,&buf,sizeof(buf),0);//接收文件明 if(ret<0){ perror("recv err"); return -6; } fp = open(buf,O_WRONLY | O_CREAT | O_APPEND,0644);//创建并打开文件 if(fp<0){ fprintf(stderr,"open err"); return -1; } while(1){ if(i==0){ break; } memset(buf,0,sizeof(buf));//接收空间清0 ret = recv(socket_client,buf,sizeof(buf),0);//接收 if(ret<0){ perror("recv err"); return -6; }else if(ret==0){ break; } printf("%s\n",buf);//打印一遍用于观察 i = write(fp,buf,sizeof(buf));//写入打开的文件 if(i<0){ perror("write err"); return -13; }else if(i==0){ break;} sleep(1); } close(socket_sever); close(socket_client); } 问题出现在写入完成后末尾出现连续的^@^@^@^@^@^@^@^@符号,占用空间

socket网络传输速度很慢的问题

请问一下各位,我的单个socket连接的socket client 和 server都在同一台电脑上的时候速度极快,20MB/s,为什么把server放到另外一台电脑上其中要经过交换机的时候速度就降到了90kB/s的样子,在同一台电脑上速度快说明发送和接收速度都很快的,而经过交换机以后速度就很慢说明时间是消耗在网络传输上,正常上网下载东西的时候速度不慢大概是5MB/s,请问一下是因为socket还有什么参数没设置吗,速度这么慢 补充一下,刚才我以多个socket通道连接的方式试了一下,连接数为1的时候速度大概为90KB/s,五个socket通道的时候速度大概130kB,20个socket通道的时候速度也是130kB/s,看来增加socket连接个数并不能增加网络传输的速度,我认为是不是交换机把我的应用的socket限速了,哪位见多识广的高手帮忙分析一下,感激不尽,谢谢。

VB.Net Socket实现Http文件上传及下载类如何使用

门外汉求指教。 1、平台:SQL 2008 & appserv & mysql,VS2010 2、问题:①为实现文件上传、下载功能; ②参照了http://www.newxing.com/Tech/DotNet/VBDotNet/Socket_213.html 3、提问:①已添加上述网站中WebClient模块,现调用httpClient.UploadFile httpClient.DownLoadFile,WinForm中使用Form1.WebBrowser1.DocumentText=httpClient.UploadFile,无效; 4、请高手指教,是否在appaserv中再加一上传或下载的php文件,才能实现?

java 单纯使用socket实现FTP下载功能

FTP服务器目录: F:/FTP / \ **b** a.txt / \ **c** **b.txt** / **c.txt** (没有加上后缀txt的都是文件夹) 假设客户端需要下载整个F:/FTP/b ,问题:服务器和客户端用什么方式来 同步输出流和输入流(局域网两台机子测试)

C#通过Socket实现多文件传输

大概需求是客户端发送一个xml文件名给服务器,服务器返回xml文件。这一步没问题。 后面客户端需要解析xml文件,根据解析出的文件名,去服务器获取指定文件。现在问题是第一次服务器发送xml文件之后就侦听不到客户端后面的请求了 服务端代码: ``` #region 窗体加载 private void Form1_Load(object sender, EventArgs e) { Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Socket设置、IPv4、Stream类型套接字、TCP协议 IPAddress ip = IPAddress.Any;//获取本机IP IPEndPoint point = new IPEndPoint(ip, 18002);//设置IP和端口 socketWatch.Bind(point);//绑定端口 memoEdit1.Text = "开始侦听..."; socketWatch.Listen(100);//最大连接数 Thread th = new Thread(SendFileFuncssss);//创建新线程 th.Start(socketWatch);//启动线程 th.IsBackground = true;//设置后台运行线程 } #endregion #region 根据客户端传输文件名发送指定文件 public void SendFileFuncssss(object obj) { Socket socket = obj as Socket; while (true) { Socket socketServices = socket.Accept(); byte[] buffer = new byte[1024]; int num = socketServices.Receive(buffer);//接收到字节数 string str = Encoding.UTF8.GetString(buffer, 1, num - 1);//接收到字符串 if (buffer[0] == 0)//表示接收到的是消息数据 { TxtAddContent(socketServices.RemoteEndPoint + "连接成功"); string FileName = str; if (FileName.Equals("AutoUpdater.xml"))//获取xml配置文件 { //发送XML文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 5]; int length = fs.Read(arrFile, 0, arrFile.Length); byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到客户端 } } if (!FileName.Equals("AutoUpdater.xml")) { //发送更新文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\FileFolder\\" + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 50]; int length = fs.Read(arrFile, 0, arrFile.Length);//获取文件长度 byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到服务端 } } } } } #endregion ``` 客户端代码: ``` Socket socketClient = obj as Socket; socketClient.Connect(ipEndPoint); #region 修改本地文件名称 string Oldpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml";//修改前名称 string Newpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml";//修改后名称 if (File.Exists(Oldpath)) { File.Delete(Newpath); File.Move(Oldpath, Newpath);//更改文件名 } #endregion if (socketClient.Connected) { try { TxtReceiveAddContent("连接成功"); //发送链接成功提示 byte[] arrMsg = Encoding.UTF8.GetBytes("AutoUpdater.xml"); byte[] arrSendMsg = new byte[arrMsg.Length + 1];//加一位标识用于表示是文字消息还是文件 arrSendMsg[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(arrMsg, 0, arrSendMsg, 1, arrMsg.Length); socketClient.Send(arrSendMsg); //获取文件 string dirPath = Application.StartupPath; byte[] buffer = new byte[1024 * 1024 * 5]; int lenght = socketClient.Receive(buffer); if (buffer[0] == 1) { using (FileStream fs = new FileStream(dirPath + "\\AutoUpdater.xml", FileMode.Create)) { fs.Write(buffer, 1, lenght - 1); } TxtReceiveAddContent("配置文件接收成功:AutoUpdater.xml");//追加提示备注 } #region 获取XML里需要更新的文件和需要删除的文件 List<string> updatelist = new List<string>();//需要更新的文件集合 List<string> deletelist = new List<string>();//需要更新的文件集合 //获取历史xml文件更新时间以及更新版本 XDocument Olddocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml"); //获取到XML的根元素进行操作 XElement Oldroot = Olddocument.Root; XElement Oldele = Oldroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement OldUpdateTime = Oldele.Element("UpdateTime"); //获取旧版本号标签的值 XElement OldVersion = Oldele.Element("Version"); //获取最新xml文件更新时间以及更新版本 XDocument Newdocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml"); //获取到XML的根元素进行操作 XElement Newroot = Newdocument.Root; XElement Newele = Newroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement NewUpdateTime = Newele.Element("UpdateTime"); //获取旧版本号标签的值 XElement NewVersion = Newele.Element("Version"); if (NewUpdateTime != OldUpdateTime || NewVersion != OldVersion) { //获取需要更新的文件列表 XElement NewUpList = Newroot.Element("UpdateList"); IEnumerable<XElement> UpList = NewUpList.Elements(); foreach (XElement item in UpList) { updatelist.Add(item.Value); } //获取需要删除的文件列表 XElement NewDelList = Newroot.Element("DeleteList"); IEnumerable<XElement> DelList = NewDelList.Elements(); foreach (XElement item in DelList) { deletelist.Add(item.Value); } } #endregion #region 循环获取更新文件 for (int i = 0; i < updatelist.Count; i++) { //发送链接成功提示 byte[] FileName = Encoding.UTF8.GetBytes(updatelist[i]); byte[] SendFileName = new byte[FileName.Length + 1];//加一位标识用于表示是文字消息还是文件 SendFileName[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(FileName, 0, SendFileName, 1, FileName.Length); socketClient.Send(SendFileName); //获取文件 string FilePath = Application.StartupPath + "\\WebFile"; byte[] bufferByFile = new byte[1024 * 1024 * 50]; int lenghtByFile = socketClient.Receive(bufferByFile); if (bufferByFile[0] == 1) { using (FileStream fs = new FileStream(FilePath + "\\" + updatelist[i], FileMode.Create)) { fs.Write(bufferByFile, 1, lenghtByFile - 1); } TxtReceiveAddContent("文件接收成功:" + updatelist[i]); } } #endregion #region 循环删除指定文件 for (int i = 0; i < deletelist.Count; i++) { try { string path = AppDomain.CurrentDomain.BaseDirectory + "\\WebFile\\" + deletelist[i]; File.Delete(path); TxtReceiveAddContent("删除文件[" + deletelist[i] + "]成功"); } catch (Exception) { TxtReceiveAddContent("删除文件[" + deletelist[i] + "]失败"); continue; } } #endregion } catch (Exception ex) { File.Move(Newpath, Oldpath);//连接失败,还原文件名 MessageBox.Show(ex.ToString()); throw; } ``` 调试在客户端进循环的时候服务端侦听不到了 刚接触socket,多谢大佬们解答

c语言使用socket发送图片文件大小正确,但是无法打开是怎么回事?

使用c语言socket通信写了一个客户端与服务器,然后客户端向服务器发送文件,服务器接收。使用自己定义的数据包协议,服务器使用单线程epoll。最后测试时,文本文件发送没有问题,但是发送图片文件,最后图片的大小没有问题,但是无法打开,提示错误:分析 JPEG 图像文件时出错(Improper call to JPEG library in state 201) 。 文件的操作使用linux下系统调用read,write,open 。请问问题可能出现在哪里?

java socket编程如何测量文件传输速度?

作业需要,分别写了一个基于tcp和udp的传输文件的程序,想测试两者同时传输时各自的传输速度 请问有什么方法可以实现?

基于socket的文件传输

用MFC做的一个小的聊天工具,要实现一个文件传输的功能,但是用ios::binary打开文件后有些文件发送不了,只能够发送txt文本,不知道为什么会这样 debug的时候发现用来将要发送的文件内容读取的缓冲区里的内容是 无效的字符串 ,按道理来说用ios::binary打开的文件应该是统一的二进制流文件,但是为什么有些字符无法读到缓冲区(字符型数组)里呢?望大神能够指点一二 ``` char *sendData; //定义一个缓冲区来装载文件内容 while (true) //进入死循环 { sendData = new char[sendMsg_size]{ '\0' }; //为缓冲区分配空间并且初始化 send_file.read(sendData, sendMsg_size - 2); //使用read方法从文件中读取适当的内容,send_file是fstream的文件对象,已经和文件关联了 for (int i = sendMsg_size - 1;i > 0;i--) //这一个循环主要是将所有读入的内容向后移动一个位置,从而给缓冲区第一个位置空出来,然后用一个‘f’来表示这一段内容是一个文件的内容,因为这是一个聊天工具,所以想要用不同的消息的头来表示这个消息的性质 { sendData[i] = sendData[i - 1]; } sendData[0] = 'f'; iResult = send(Client_socket, sendData, strlen(sendData), 0); //send函数来发送装有文件内容的缓冲区 if (iResult == SOCKET_ERROR) { pointer->MessageBox(_T("发送失败!"), _T("错误"), MB_OK | MB_ICONERROR); delete[]sendData; return 0; } //异常处理 delete[]sendData; //这一轮发完之后就删除堆中的分配的空间 while (recvData[0] != 'o'); //从客户端那里要发过来一个特定的消息才能够进入下一步,这是为了让服务器发送文件的速度和客户端接受文件并且写入的速度相符合 recvData[0] = '\0'; //客户端接受好了后,服务器重置消息头 if (send_file.peek() == EOF) { break; } //如果读到文件尾的话就说明文件已经读完了,就可以跳出死循环了 } sendData = "e"; //发送一个特定的消息给客户端,告诉它已经发完了 send(Client_socket, sendData, strlen(sendData), 0); send_file.close(); //关闭文件 ```

socket编程多线程文件传输

要实现的是开多线程传输一个文件,目的是提高传输速度。 思路是这样的:服务端开多线程,将文件分割,一个线程传输一块,客户端也开多线程,每个线程接受一块,最后拼成一个完整的文件。服务端支持多线程, 客户端要支持多线程, 然后客户端每个线程都建立连接到服务端请求一个文件的某个分片。 希望大家可以提供一下类似的代码,现在只有思路不知道怎么下手。

C语言 socket 编写简单服务端客户端通信问题

大家好,感谢你的回复。 我用c 写了一个socket通信的小程序,写好了服务端和客户端,可遇到个问题,就是每次启动客户端只能发送第一条消息,之后服务端就不能再收到消息了。 Talk is cheak , show me the code. 服务端代码: ```#include<stdio.h> #include<stdlib.h> #include<WinSock2.h> #pragma comment(lib,"ws2_32.lib") int main(){ WSADATA wsd; SOCKET sockServer; SOCKADDR_IN serveraddr;// 服务端套接字 该结构中包含了要结合的地址和端口号 SOCKET sockClient; SOCKADDR_IN clientaddr; WSAStartup(MAKEWORD(2,2),&wsd);//初始化网络接口 sockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器socket if (sockServer != -1 && sockServer != INVALID_SOCKET){ printf("Socket has been created :%d", sockServer); } else{ printf("Socket create failed."); exit(0); } serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(6000);//绑定端口6000 int bindInfo = bind(sockServer, (SOCKADDR*)&serveraddr, sizeof(SOCKADDR)); char recvBuf[100]; int len = sizeof(SOCKADDR); listen(sockServer, 5);//5为等待连接数 while (1){ sockClient = accept(sockServer, (SOCKADDR*)&clientaddr, &len); //接收客户端数据 recv(sockClient, recvBuf, strlen(recvBuf)+1, MSG_PEEK); printf("to me:%s\n",recvBuf); memset(recvBuf, 0, 100); } closesocket(sockClient); system("pause"); return 0; } ``` 客户端代码: ``` #include<winsock2.h> #include<stdio.h> #pragma comment(lib, "ws2_32.lib") void main() { WSADATA wsaData; SOCKET sockClient;//客户端Socket SOCKADDR_IN addrServer;//服务端地址 WSAStartup(MAKEWORD(2, 2), &wsaData); char message[20] = "HelloSocket!"; //定义要连接的服务端地址 addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//目标IP(127.0.0.1是回送地址) addrServer.sin_family = AF_INET; addrServer.sin_port = htons(6000);//连接端口6000 //新建客户端socket sockClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); int s = 0; s = connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR)); while (1){ //发送数据 int a = send(sockClient, message, strlen(message) + 1, 0); printf("to server:"); scanf("%s", message); } //关闭socket closesocket(sockClient); WSACleanup(); } ``` 求懂的高手来解答一下。 谢谢了!

请问socket进行视频传输时外网传输速度很慢怎么办

我在本地测试速度还很好的,使用240x320的摄像头,每一帧size大概在 3~4万(byte)之间(JPEG传输),本地测试100%传输。但是一到外网,比如我从本地 传输到外网服务器,然后经过外网服务器获取连接到它的我本地的另外一个 客户端,经过NAT转换后从外网又发回来,获取以后直接打通NAT进行P2P传输, 与本地测试的唯一区别就是地址换成了外网IP,但是这时传输只有12/3~4万(byte), 这个速度业太慢了~不知道是为什么,有大神知道其中的原因吗? 发送接收协议是: 发送端使用sendto发送"push 30000",紧接着再使用sendto发送jpeg数据 接收端使用recvfrom获取到字节数int size=30000,紧接着 使用dummy[1000000]按照下面的recvfrom来接收数据: int ret = recvfrom(PrimaryUDP, dummy, size, 0, (sockaddr *)&remote, &fromlen); 两次发送和两次接收之间都是没有任何延时的。 本地测试ret为size的大小,但是外网传输时ret为12或者更少的时候只有6! 我尝试过使用while(total < size) total += recvfrom(...); 但是结果还是只有12byte因此循环就等了好久。。。 请大神指教,如果实在不行希望能指教一下如何压缩数据(我认为压缩数据仍旧 不能挽救只接收到12byte的事实,应该是协议有些问题,求教有经验的指教视频 比如说直播间的数据传输是怎样的协议)

socket 网络编程传输文件

进行网络通信,socket编程,传输文件过程中,如何来通过调用函数来获得传输文件的大小,以及传输该文件相对应的时间,有什么好的办法吗?

c++和c语言socket的区别

之前学了c语言socket,现在想用c++写个MFC通信,过程中发现不知道自己是在用c语言还是c++,而且网上的c++通信好杂,有的用CSOCKET,有的用CREATE创建套接字,有的Send大写,有的send小写,还有recv和大写的Receive,我完全混了,搞不清哪个是用c++语言开发的,还有头文件也不同,有的是winsock2,有的是afxsocket。。。求解答

自己写了一个用java socket通信实现的文件传输,如果我想实现不同局域网之间的传输怎么办?

可不可以把自己的电脑搭建成服务器然后把文件传上去,自己电脑的服务器可以使用非web的文件么

iOS怎么用socket实现大文件断点上传功能,类似于优酷中视频上传?

iOS怎么用socket实现大文件断点上传功能,类似于优酷中视频上传?哪位大神给点思路或者相关demo,跪求!!!

c/c++ socket实现网盘

老师布置这样一个作业,以Linux作服务器做一个网盘,要求断点续传和多用户上传同一文件,有几个问题没想明白,想问问。 1、断点续传的话,应该可以通过记录已上传文件的大小来实现。client上传文件的时候,server回复已上传的大小,然后client就跳过已上传的部分。 2、但是,多用户上传同一个文件要怎么实现?怎么把一个大文件的不同部分分配给各个client分别上传?如果上传期间有新的client上传,或者正在上传的client退出,原来的分配计划也要动态更改。 我目前的想法是,server收到上传的请求后,得到文件的大小,然后把文件分成若干个固定大小(m 字节)的块。然后server发送一个块号k给client,client就发送文件的第k块给server。server再根据块号的大小顺序保存client发来的数据。多个用户同时上传时,server就依次发送不同的块号给各个client。 我想问问有没有更好的方案。

java下载zip文件socket write error

今天用java下载zip文件的时候老是出现如下错误,从网上找了错误原因,感觉答案解决不了我的问题: ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:342) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126) 代码如下: File file = new File("d:/zhangrm/aa/test.zip"); response.reset(); response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(file.getName(), "UTF-8")))); response.setContentType("application/x-msdownload"); response.setContentLength((int) file.length()); try { InputStream inputStream = new FileInputStream(file); BufferedInputStream buffInput = new BufferedInputStream(inputStream); //写文件 byte[] b = new byte[1024]; long k = 0; OutputStream outputStream = response.getOutputStream(); BufferedOutputStream buffOutput=new BufferedOutputStream(outputStream); while (k < file.length()) { int j = buffInput.read(b, 0, 1024); k += j; buffOutput.write(b, 0, j); } buffOutput.flush(); inputStream.close(); buffInput.close(); outputStream.close(); buffOutput.close(); // deleteFile(pathTo); //deleteFile(Const.ZIPFILENAME); } catch (IOException e) { log.error("数据下载失败!"); e.printStackTrace(); } 望大神帮忙解决下!!!小妹不胜感激!

C语言 SOCKET编程 聊天室能检测到局域网的客户端是什么原理

只要客户端发送连接请求,就算局域网内存在有客户端了吗 课程设计的一个要求,可以不用太严谨,能实现就好,我搞不懂这里的原理

C语言中SOCKET编译不了

``` #include <stdio.h> #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib" void main() { //main开头 int ret; WSADATA wsaData; ret = WSAStartup(0x11,&wsaData); if(ret == SOCKET_ERROR) { perror("failed to start up"); return; } SOCKET server; } ``` 编译出来提示错误 1 error C2275: “SOCKET”: 将此类型用作表达式非法

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐