[使用Socket C#的服务器客户端通信

问题描述 投票:0回答:1

我已经创建了一个应用程序,该应用程序正在使用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));
c# sockets client-server ascii
1个回答
0
投票

正如注释中所建议的,您应该断言您已读取所有数据,而不仅是第一块。

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://docs.microsoft.com/pl-pl/dotnet/api/system.net.sockets.socket?view=netframework-4.8上使用套接字有一些很好的例子。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.