我目前正尝试通过TCP在C++客户端和C#服务器之间发送jpeg图片流。 我在C++端使用transmitFile函数,但我不知道我是否在C#端正确处理它。 我没有得到运行时错误,但图片没有显示,所以我想我错过了一些东西。通过TCP在C++客户端/ C#服务器之间传输文件

编辑:更新后的代码,我收到正在做一个计算器档案大小...

C++代码(客户端:发送图片)

void TCPclient::sendPicture(LPCWSTR filename, std::string filename_str)

{

HANDLE hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);

//Send file size

send(sock, (const char*)GetSize(filename_str), sizeof(int), 0);

LogManager::log(std::to_string(GetSize(filename_str)));

//Send file

TransmitFile(sock, hFile, GetFileSize(hFile, NULL), 1024, NULL, NULL, TF_USE_KERNEL_APC | TF_WRITE_BEHIND);

CloseHandle(hFile);

}

int TCPclient::GetSize(std::string filename)

{

struct stat stat_buf;

int rc = stat(filename.c_str(), &stat_buf);

return rc == 0 ? stat_buf.st_size : -1;

}

C#代码(服务器:接收图像和显示它)

while (true)

{

try

{

using (MemoryStream stream = new MemoryStream(ReceiveVarData(clientSock)))

{

stream.Position = 0;

Image image = Image.FromStream(stream);

if (image != null)

pictureBox1.Image = image;

}

}

catch (Exception ex)

{

Console.WriteLine(ex.ToString());

}

}

public static byte[] ReceiveVarData(Socket s)

{

Console.WriteLine("Receiving data ...");

int offset = 0;

int recv;

Console.WriteLine("Receiving data size ...");

byte[] datasize = new byte[4];

s.Receive(datasize);

int size = BitConverter.ToInt32(datasize, 0);

Console.WriteLine("Data size " + size);

byte[] data = new byte[size];

while (offset < size)

{

Console.WriteLine("Downloading " + (offset/size)*100.0 + "%");

recv = s.Receive(data, offset, 1024, SocketFlags.None);

if (recv == 0)

{

data = null;

break;

}

offset += recv;

}

return data;

}

2017-04-04

Germain

+0

您阅读文件大小,但我没有看到您发送文件大小的位置? –

c# 客户端 服务器传输文件,通过TCP在C++客户端/ C#服务器之间传输文件相关推荐

  1. linux ssh 推送文件_通过SSH实现Windows与linux之间传输文件

    Linux是非常好的开发环境,但很多时候我们希望能够在Windows上操作,通过SSH协议可以实现两者之间传输文件. 一 需要在Linux系统上安装ssh-server,有的linux系统自带了. 查 ...

  2. 怎样用计算机传输文件,如何使用 Windows 轻松传送在计算机之间移动文件

    本文提供有关使用轻松文件传输功能将数据从旧计算机传输到新计算机的信息.Windows Vista.Windows 7 和 Windows 8.1 上提供此 Windows 功能.Windows 10 ...

  3. iphone和mac互传文件_怎样快速在iphone与mac之间传文件

    展开全部 一般来说,32313133353236313431303231363533e4b893e5b19e31333365643662iPhone.iPad和电脑之间要传送文件都要借助iTunes. ...

  4. 两台linux电脑在互联网内传输文件,linux网络编程之实现跨平台PC之间进行文件传输...

    //实现两台计算机进行文件传输,包括跨平台传输即linux与windows之间 //TCP的文件传输 //文件大小不限制,需要做到将大文件分包去做 server.c //服务端程序 int main( ...

  5. windows下的库文件在linux的使用,Windows、Linux之间传输文件的几种方式

    常见的文件传输协议有ftp.sftp,sftp就是在ftp的基础上对传输的数据进行了加密. ftp速度快,sftp速度略慢但安全性高. ftp默认使用21端口,sftp默认使用22端口. 我使用的是C ...

  6. 与android虚拟机传输文件,android 在本机和虚拟机设备之间复制文件

    可以使用 adb push 命令从本机复制文件到设备中, 使用adb pull 命令从设备复制文件到本机中 首先要通过命令行进入 android sdk目录下的platform-tools目录 例如我 ...

  7. 一台windows机器和一台linux机器之间互相拷贝文件的方法,windows系统和Linux系统之间拷贝文件***--pscp...

    putty secure copy == pscp,是putty提供的文件传输***,通过ssh两件,在两台机器之间安全传输文件 获取pscp工具:http://www.chiark.greenend ...

  8. 所给服务器端程序改写为能够同时响应多个客户端连接请求的服务器程序_一文读懂客户端请求是如何到达服务器的...

    点击上方"蓝色字体",选择 "设为星标" 关键讯息,D1时间送达! 互联网是人类历史上最伟大的发明创造之一,而构成互联网架构的核心在于TCP/IP协议.那么TC ...

  9. linux系统间拷贝文件,Linux系统下不同机器之间拷贝文件的方法

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

最新文章

  1. SharePoint 2013 APP 开发示例 (三)使用远程的web资源
  2. 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
  3. 今日arXiv精选 | 13 篇 ICCV 2021 最新论文
  4. 凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)
  5. 多核cpu服务器安装SQLserver 2005的问题
  6. python实现mysql数据导入HBase
  7. mysql odbc 64位 驱动_MySQL ODBC驱动程序下载
  8. 如何快速激活数据恢复软件
  9. STM32解析SBUS信号例程详解
  10. vmware7序列号
  11. Java面试题(140多道高频面试题2022版)
  12. ajax hapi上传文件,在hapi框架里使用ajax提交表单数据,但是服务端接收到的数据是空对象。怎么办啊?...
  13. 常见前端面试题及答案-转载
  14. 「SQL面试题库」 No_55 销售分析 I
  15. RabbitMQ集群的学习
  16. DDD与TDD比较之——TDD
  17. window安装Linux
  18. 安卓微信中下载apk无反应 微信浏览器无法跳转到apk下载链接方案
  19. Ubuntu16.04配置pytorch环境(CPU版)
  20. iOS开发:停止不必要的UI动效设计

热门文章

  1. 【codevs1557】 热浪, Dijkstra算法入门
  2. 2017.10.19 大陆争霸 思考记录
  3. 【英语学习】【Level 07】U01 Making friends L1 New kid on the block
  4. 【英语学习】【English L06】U08 News L5 They are expecting a baby!
  5. 【英语学习】【WOTD】ephemeral 释义/词源/示例
  6. Java写一个简单的扫雷游戏
  7. Spring从入门到入土——Bean的作用域与生命周期
  8. 为系统扩展而采取的一些措施——缓存
  9. IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
  10. python pandas 排序_python – pandas:单独对每列进行排序