無法找到這個在stackoverflow上,我確實有一個它的例子,我寫了幾個月前,但現在找不到。C#讀取一個字節[]並刪除垃圾數據
基本上我從客戶端向服務器發送byte [],在服務器窗口中顯示它,然後計劃對其中的數據進行操作。其中我收到的數據,但是,不被清洗每一次,例如:
我送「ABCDEF」 服務器顯示「ABCDEF」 我送「GHI」 服務器顯示「GHIDEF」
我想你可以看到我來自哪裏,我只需要一個清理byte []數組的方法,就這一方面而言。
下一步就是隻讀取我打算使用的字節,所以儘管我只使用了X數據量,但實際上我正在接收比我需要的更多的數據,我現在需要在最後處理額外的數據。
任何人都可以告訴我如何去做這件事嗎?
我的代碼如下。
客戶:
static void Main(string[] args)
{
try
{
ASCIIEncoding encoding = new ASCIIEncoding();
Console.WriteLine("Welcome to Josh's humble server.");
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 2000);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
sock.Bind(ipEnd);
sock.Listen(100);
Socket clientSock = sock.Accept();
byte[] mabytes = encoding.GetBytes("Test");
clientSock.Send(mabytes);
Console.WriteLine("Hmmm, data sent!");
Console.ReadLine();
Console.WriteLine(encoding.GetString(mabytes));
Console.ReadLine();
byte[] buffer = encoding.GetBytes("server message");
while (true)
{
clientSock.Receive(buffer);
Console.WriteLine(encoding.GetString(buffer));
}
}
catch (Exception ex)
{
Console.WriteLine(Convert.ToString(ex));
Console.ReadLine();
}
}
服務器:
static void Main(string[] args)
{
ASCIIEncoding encoding = new ASCIIEncoding();
IPAddress ip = IPAddress.Parse("127.0.0.1");
Console.WriteLine("Welcome to Josh's humble client.");
Console.ReadLine();
IPEndPoint ipEnd = new IPEndPoint(ip, 2000);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
sock.Connect(ipEnd);
while (true)
{
Console.WriteLine("Please enter a message:\n");
byte[] mabyte = encoding.GetBytes(Console.ReadLine());
sock.Send(mabyte);
Console.WriteLine("Sent Data");
}
}
在此先感謝
我相信你有你的客戶端和服務器代碼塊倒退。請相應地編輯以避免混淆。 –