gpt4 book ai didi

c# - C#套接字发送图片JPEG

转载 作者:行者123 更新时间:2023-12-03 12:01:01 25 4
gpt4 key购买 nike

因此,我在stackoverflow中找到了一个用于通过套接字发送二进制文件,图像的代码。因此,我将其用于测试我的项目

private void send_ss()
{
byte[] data = new byte[1024];
int sent;
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 306);

Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);

try
{
server.Connect(ipep);
}
catch (SocketException e)
{
//Console.WriteLine("Unable to connect to server.");
//Console.WriteLine(e.ToString());
//Console.ReadLine();
}


Bitmap bmp = new Bitmap("C:\\Windows\\Web\\Wallpaper\\Theme2\\img7.jpg");

MemoryStream ms = new MemoryStream();
// Save to memory using the Jpeg format
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

// read to end
byte[] bmpBytes = ms.ToArray();
bmp.Dispose();
ms.Close();

sent = SendVarData(server, bmpBytes);

//Console.WriteLine("Disconnecting from server...");
server.Shutdown(SocketShutdown.Both);
server.Close();
}
private static int SendVarData(Socket s, byte[] data)
{
int total = 0;
int size = data.Length;
int dataleft = size;
int sent;

byte[] datasize = new byte[4];
datasize = BitConverter.GetBytes(size);
sent = s.Send(datasize);

while (total < size)
{
sent = s.Send(data, total, dataleft, SocketFlags.None);
total += sent;
dataleft -= sent;
}
return total;
}

因此,我尝试在端口306(监听m IRC)的一个监听套接字上发送此图片
on *:socklisten:ac_img:{
var %p = $ticks $+ $time(hhnnss) $+ $ctime
sockaccept ac_img_ $+ %p
echo -s [] Image Connection Established On -> ac_img_ $+ %p
}
on *:sockread:ac_img_*:{
sockread &picture
bwrite $qt($mIRCdir $+ $sockname $+ .jpg) -1 -1 &picture
}

所以我正在获取ac_img_2920385501147471360792067.jpg之类的文件。与原始大小相同,但是图像没有出现,所以我用写字板打开了两个文件,它们有些不同...不知道为什么...

那么,为什么我要面对这个问题?我的意思是...我要从套接字中获取每个数据并将其保存到文件中?可能是文件通过C#读取损坏了?

最佳答案

图像有所不同,因为您阅读了图像,将其解析为Bitmap并重新编码。写字板屏幕截图显示,两者都是JPEG格式,但元数据不同(例如,缺少“adobe”)。

只需使用File.ReadAllBytes或其他无损方法即可读取图像。

发送代码看起来不错。不知道为什么要循环播放。在阻塞套接字上,从不发送部分IO AFAIK。

关于c# - C#套接字发送图片JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14863972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com