如何使用套接字C#发送/接收连续图像? [英] How can I send / receive continuous images with socket C#?
本文介绍了如何使用套接字C#发送/接收连续图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,我的套接字代码有问题。
当我从CLIENT发送SEND命令时,SERVER将图像发送到CLIENT,它的成功。
当我发送SEND命令时,如何发送/接收连续图像?
请帮帮我,谢谢!
Hi everyone, I have a problem with my socket code.
When I send "SEND" command from CLIENT, SERVER send image to CLIENT, its success.
How can I send / receive continuous images WHEN I send "SEND" command?
Please help me, thanks!
SERVER
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace server_image_3
{
class Program
{
static void Main(string[] args)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(iep);
server.Listen(10);
Console.WriteLine("Waiting for connection...");
Socket client = server.Accept();
NetworkStream ns = new NetworkStream(client);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
//string kq = "";
while (true)
{
string s = sr.ReadLine();
s = s.ToUpper();
if (s.Equals("QUIT"))
{
break;
}
if (s.Equals("SEND"))
{
//kq = DateTime.Now.ToString("dd/MM/yyyy");
// send the file
byte[] buffer = ReadImageFile("1.jpg");
client.Send(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("Send success!");
}
sw.Flush();
}
sr.Close();
sw.Close();
client.Close();
}
private static byte[] ReadImageFile(String img)
{
FileInfo fileinfo = new FileInfo(img);
byte[] buf = new byte[fileinfo.Length];
FileStream fs = new FileStream(img, FileMode.Open, FileAccess.Read);
fs.Read(buf, 0, buf.Length);
fs.Close();
//fileInfo.Delete ();
GC.ReRegisterForFinalize(fileinfo);
GC.ReRegisterForFinalize(fs);
return buf;
}
}
}
////////////////////
客户
////////////////////
CLIENT
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace client_image_3
{
class Program
{
static void Main(string[] args)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
NetworkStream ns = new NetworkStream(client);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
while (true)
{
string input = Console.ReadLine();
sw.WriteLine(input);
sw.Flush();
if (input.ToUpper().Equals("QUIT"))
{
break;
}
else
{
// receive data
byte[] buffer = new byte[1000000];
client.Receive(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("Receive success");
FileStream fs = File.Create("1.jpg");
fs.Write(buffer, 0, buffer.Length);
//fs.Close();
}
//
//string kq = sr.ReadLine();
// Console.WriteLine(kq);
}
sr.Close();
sw.Close();
ns.Close();
client.Close();
}
}
}
推荐答案
为什么不使用文件类?
您的服务器:
Why not just use "File" class?
Your server:
class Program
{
static void Main(string[] args)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(iep);
server.Listen(10);
Console.WriteLine("Waiting for connection...");
using (Socket client = server.Accept())
{
while (true)
{
string s = Console.ReadLine().ToUpper();
if (s.Equals("QUIT"))
{
break;
}
if (s.Equals("SEND"))
{
// send the file
byte[] buffer = File.ReadAllBytes("1.jpg");
client.Send(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("Send success!");
}
}
}
}
}
您的客户:
Your client:
class Program
{
static void Main(string[] args)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
client.Connect(iep);
while (true)
{
string input = Console.ReadLine();
if (input.ToUpper().Equals("QUIT"))
{
break;
}
else
{
// receive data
byte[] buffer = new byte[1000000];
client.Receive(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("Receive success");
File.WriteAllBytes("1.jpg", buffer);
}
}
}
}
}
这篇关于如何使用套接字C#发送/接收连续图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文