[英]Server client communication using Socket C#
我創建了一個應用程序,它使用 IP/端口與服務器通信。 它正在發送 ISO 請求字符串(ASCII 格式的位圖)並接收相同格式的響應字符串。 通過 socket.send 發送字節並在 socket.receive 方法中接收字節。 我可以看到擴展的 ASCII 字符在另一端(服務器端/克林特端)發生了變化。 我正在使用下面的代碼。 任何人都可以建議,如何解決這個問題。
IPAddress ipAddr = IPAddress.Parse("10.03.0.18");
IPEndPoint localEndPoint = new IPEndPoint(ipAddr, 12345);
// Creation TCP/IP Socket using
// Socket Class Costructor
Socket sender = new Socket(ipAddr.AddressFamily,SocketType.Stream, ProtocolType.Tcp);
sender.Connect(localEndPoint);
string requeststring = AccountValidationRequest();
byte[] messageSent = Encoding.ASCII.GetBytes(requeststring);
int byteSent = sender.Send(messageSent);
byte[] ServerResponse = new byte[1024];
int byteRecv = sender.Receive(ServerResponse);
string ISO8583Message = Encoding.ASCII.GetString(ServerResponse, 0, byteRecv);
Console.WriteLine("Response received from server: --> :{0}", Encoding.ASCII.GetString(ServerResponse, 0, byteRecv));
正如評論中建議的那樣,您應該斷言您讀取了所有數據,而不僅僅是第一個塊。
Byte[] bytesReceived = new Byte[256];
int bytes = 0;
var ISO8583Message = "Response: \n";
do {
bytes = sender.Receive(bytesReceived, bytesReceived.Length, 0);
ISO8583Message = ISO8583Message + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
while (bytes > 0);
在 https 上使用 sockets 有一些很好的例子://docs.microsoft.com/pl-pl/dotnet/api/system.net.sockets.socket?view=netframework-8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.