これはstackoverflowで見つけることができませんでした。数か月前に書いた例がありましたが、今も見つかりません。
基本的に、クライアントからサーバーに 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");
}
}
前もって感謝します