Socket 基础 非阻塞式TCP socket,实现文件传输jpg,mov等格式
2016-08-27 01:37
302 查看
Socket 基础
非阻塞式TCP socket
实现文件传输,
实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收
客户端可多开,服务器多线程实现服务器一对多
服务器部分:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <thread>
#define BUF_SIZE 1024
#include <iostream>
void connThread(SOCKET sock)
{
char chBuf[1024];
int nRes = 0;
std::FILE* f;
errno_t err;
err = fopen_s(&f, "G:\\qzher_3249.MOV", "rb");
//err = fopen_s(&f, "G:\\qzher_3165.NEF", "rb");
//err = fopen_s(&f, "G:\\qzher_3052.jpg", "rb");
UINT64 nFileLen = 0;
if (err == 0)
{
fseek(f, 0L, SEEK_END);
nFileLen = ftell(f);
printf("文件大小为:%d 字节\n", nFileLen);
fseek(f, 0, SEEK_SET);
}
else
{
printf("The file was not opened\n");
return;
}
UINT64 nRead = 0;
UINT64 nSendLen = 0;
clock_t start, finish;
double dDuration = 0.0;
start = clock();
int i = 0;
while (true)
{
ZeroMemory(chBuf, BUF_SIZE);
if ((nFileLen – nSendLen) >= BUF_SIZE )
{
nRead = fread(chBuf, sizeof(char), BUF_SIZE, f);
//nRemainLen -= BUF_SIZE;
}
else // 剩下的
{
if (nFileLen <= nSendLen)
{
break;
}
nRead = fread(chBuf, sizeof(char), nFileLen – nSendLen, f);
//nSendLen = 0;
}
for (i = 0; i < nRead
非阻塞式TCP socket
实现文件传输,
实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收
客户端可多开,服务器多线程实现服务器一对多
服务器部分:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <thread>
#define BUF_SIZE 1024
#include <iostream>
void connThread(SOCKET sock)
{
char chBuf[1024];
int nRes = 0;
std::FILE* f;
errno_t err;
err = fopen_s(&f, "G:\\qzher_3249.MOV", "rb");
//err = fopen_s(&f, "G:\\qzher_3165.NEF", "rb");
//err = fopen_s(&f, "G:\\qzher_3052.jpg", "rb");
UINT64 nFileLen = 0;
if (err == 0)
{
fseek(f, 0L, SEEK_END);
nFileLen = ftell(f);
printf("文件大小为:%d 字节\n", nFileLen);
fseek(f, 0, SEEK_SET);
}
else
{
printf("The file was not opened\n");
return;
}
UINT64 nRead = 0;
UINT64 nSendLen = 0;
clock_t start, finish;
double dDuration = 0.0;
start = clock();
int i = 0;
while (true)
{
ZeroMemory(chBuf, BUF_SIZE);
if ((nFileLen – nSendLen) >= BUF_SIZE )
{
nRead = fread(chBuf, sizeof(char), BUF_SIZE, f);
//nRemainLen -= BUF_SIZE;
}
else // 剩下的
{
if (nFileLen <= nSendLen)
{
break;
}
nRead = fread(chBuf, sizeof(char), nFileLen – nSendLen, f);
//nSendLen = 0;
}
for (i = 0; i < nRead
相关文章推荐
- Socket 实现非阻塞式多线程文件传输(jpg mov 等各种格式)
- Socket 实现非阻塞式多线程文件传输(jpg mov 等各种格式)
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- socket/TCP/UDP基础及Unity聊天室的实现
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分(来源:http://blog.csdn.net/yangjundeng/archive/2005/03/17/321920.aspx)
- Java,Socket&TCP编程 实现多线程端对端通信与文件传输
- Socket网络程序设计(3) ———— 利用tcp完成文件传输的设计和实现
- [转载]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分 .
- Photon服务器引擎(二)socket/TCP/UDP基础及Unity聊天室的实现
- C#中使用异步Socket编程实现TCP网络服务的CS的通讯构架(一)----基础类库部分
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 4000 java基础_socket编程_TCP实现
- Linux Socket 摘要(二)(基于TCP的C/S基本实现,相关基础知识,非阻塞select)
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- Photon服务器引擎(二)socket/TCP/UDP基础及Unity聊天室的实现
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分(转)
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分