私はGPSデバイスをたくさん持っています。私のデバイスの1台(クライアントとして)はTCP [3G * 4700201934 * 0009 * LK、0,1,61]で毎分このメッセージを送信します。C#ソケットはデータを受信して再び送受信します
と私のサーバはGPSデバイスからのメッセージを読んで返信する必要があります私のサーバーは、GPS位置を取得するために、このメッセージ "[3G * 4700201934 * 0009 * LK]"を送信する必要があることを意味します。このメッセージを送信できない場合、GPSデバイスはGPSの位置情報を送信しません。
マイコード:
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
//Sonsuz döngü sayesinde AgAkimini sürekli okuyoruz
while (true)
{
Socket client = listener.AcceptSocket();
Console.WriteLine("Connection accepted.");
var childSocketThread = new Thread(() =>
{
byte[] data = new byte[100];
int size = client.Receive(data);
string fromGPSMessage = string.Empty;
for (int i = 0; i < size; i++)
fromGPSMessage += Convert.ToChar(data[i]);
Console.WriteLine("Recieved data: " + fromGPSMessage);
//fromGPSMessage = [3G*4700201934*0009*LK,0,1,59]
string serverMessageToGPS = fromGPSMessage.Substring(0, fromGPSMessage.IndexOf(",")) + "]";
//serverMessageToGPS = [3G*4700201934*0009*LK]
Encoding ascii = Encoding.ASCII;
client.Send(ascii.GetBytes(serverMessageToGPS));
data = new byte[100];
size = client.Receive(data);
string newMessagefromGPSMessage = string.Empty;
for (int i = 0; i < size; i++)
newMessagefromGPSMessage += Convert.ToChar(data[i]);
Console.WriteLine("New Message Data: " + newMessagefromGPSMessage);
client.Close();
});
childSocketThread.Start();
}
は時々、新しいメッセージデータはありません。
私はデバイスにメッセージを送ることができますが、私はGPSからの第2のメッセージを取得する方法がわかりませんデバイス。
'TcpListener'を使ってTCPサーバを作成するチュートリアルは簡単に見つかりますが、試してみましたか? –
各メッセージの後にクライアントが接続を終了していますか?新しいサーバーを作成してもう一度リスニングを開始するには、コード内に別のループが必要です。 – jdweng
@ C.Evenhuis私はコードを共有 –