图像发送通过socket c++服务器端和c#客户端
Image sending through socket C++ server and C# client
我正在使用c#开发一个windows商店应用程序。我想建立TCP连接来接收来自桌面服务器的图像(目前)。
我有一个客户端c++测试的功能,它是完美的工作。现在我想要的是一个类似的客户端,但在c#。我试着转换它,但没有运气,我试图使用相同的逻辑,但我有大量的错误,并删除了一切。
感谢你的帮助。
c++服务器int size = 8192; //image size
char* bufferCMP;
bufferCMP = (char*)malloc(sizeof(char)* size);
FILE *p_file;
p_file = fopen("C:\Program Files\img1.png", "rb");
fread(bufferCMP, 1, size, p_file);
fclose(p_file);
int chunkcount = size / DEFAULT_BUFLEN;
int lastchunksize = size - (chunkcount * DEFAULT_BUFLEN);
int fileoffset = 0;
printf("Sending actual Chunk");
while (chunkcount > 0)
{
iResult = send(ClientSocket, bufferCMP + (fileoffset * DEFAULT_BUFLEN), DEFAULT_BUFLEN, 0);
fileoffset++;
chunkcount--;
if (iResult != DEFAULT_BUFLEN)
{
printf("Sending Buffer size <> Default buffer length ::: %dn");
}
else
{
printf("Sending Buffer size = %d n", iResult, fileoffset);
}
}
printf("Sending last Chunk", lastchunksize);
iResult = send(ClientSocket, bufferCMP + (fileoffset * DEFAULT_BUFLEN), lastchunksize, 0);
c++客户端(将转换为c#)
int size = 8192;
int FileCounter = 0;
bool flg = true;
char * fileComplete;
char * filesizeBuffer;
FILE *temp;
int receiveBuffer = 0;
int desiredRecBuffer = size;
//int desiredRecBuffer = DEFAULT_BUFLEN ;
fileComplete = (char*)malloc(sizeof(char)* size);
while (desiredRecBuffer > 0)
{
iResult = recv(ConnectSocket, fileComplete + receiveBuffer, desiredRecBuffer, 0);
//iResult = recv( ClientSocket, fileComplete + receiveBuffer , fileSize , 0 );
if (iResult < 1)
{
printf("Reveive Buffer Error %d n", WSAGetLastError());
}
else
{
receiveBuffer += iResult;
desiredRecBuffer = size - receiveBuffer;
printf("Reveived Data size : %d n", desiredRecBuffer);
}
}
FILE *File = fopen("C:\Users\amirk_000\Pictures\img1b.png", "wb");
fwrite(fileComplete, 1, size, File);
//flg = true;
free(fileComplete);
fclose(File);
c#客户端套接字的完整示例在MSDN
修改给定的SocketSendReceive
方法,将接收到的缓冲区(bytesReceived
数组)写入文件流。
应该这样做:
using (var file = File.OpenWrite("myimage.png"))
{
do
{
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
file.Write(bytesReceived, 0, bytes);
}
while (bytes > 0);
}
相关文章:
- OpenSSL TLS服务器-使用客户端证书白名单
- 在 QNX 中,如何管理服务器和客户端之间的 IPC 连接?
- 如何使用 asio 本地数据报构建回显服务器和客户端?
- 如何使用标准库网络 TS 在服务器和客户端之间发送消息C++
- 客户端发送消息,但服务器在客户端结束程序之前不接收消息
- 服务器 Python 客户端 C++ 10061
- 服务器和客户端同时使用BOOST-ASIO
- 服务器和客户端都在PC上运行.客户端可以使用PC的IP连接到服务器
- C 套接字服务器不接受任何客户端 /客户端无法连接
- TCP 服务器/客户端:客户端 recv() 返回空白缓冲区
- Apache Thrift服务器作为客户端
- 服务器和客户端之间的同步
- 如何使用 zeromq(zmq) 在服务器和客户端之间发送整数值
- Apache Thrift C++服务器超时客户端连接
- 无法使用<double> QTcpSocket 和 QDataStream 在服务器和客户端之间传输 QVector
- 在服务器和客户端中拦截GRPC C 调用
- 如何在服务器和客户端之间进行异步通信
- 同一模块中的 gSOAP 服务器和客户端
- "MFC/C++ Socket programming.." 如何连接服务器和客户端?
- C++:服务器和客户端之间的经典通信练习