簡體   English   中英

服務器客戶端通信使用 Socket C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM