Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Diese Seite zeigt lediglich nicht-personalisierte Werbung an, um der neuen EU-Datenschutzgrundverordnung gerecht zu werden.
Translate
Freitag, 23. Oktober 2015
Socket-Receive data byte per byte in C#
public string SendMessage(string serverAddress, int port, string message)
{
try
{
// Establish the remote endpoint for the socket.
IPHostEntry ipHostInfo = Dns.Resolve(serverAddress);
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
// Create a TCP/IP socket.
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint. Catch any errors.
sender.Connect(remoteEP);
// Encode the data string into a byte array.
byte[] data = Encoding.ASCII.GetBytes(message);
// Send the data through the socket.
int bytesSent = sender.Send(data);
// String to store the response ASCII representation.
string responseData = "";
// Buffer to store the response bytes.
data = new byte[262144]; //2^18
byte [] onlyOneByte = new byte[1];
// Receive the response from the remote device.
int bytesRec = 0;
do
{
sender.Receive(onlyOneByte);
data[bytesRec] = onlyOneByte[0];
bytesRec++;
}
while (onlyOneByte[0]!=(char)3);
//While not <ETX> reached, get new data
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytesRec);
// Release the socket.
sender.Shutdown(SocketShutdown.Both);
sender.Close();
return responseData;
}
catch (Exception e)
{
return "";
}
}
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen