والغرض من هذا التطبيق هو للسيطرة على الأجهزة عن بعد مثل اردوينو، Netduino، توت العليق بي ...
البروتوكول هو TCP / IP (عميل).
UP: 0، والطاقة، 0
أسفل: 0، باور، 0
LEFT: باور، والطاقة، 0
اليمين: الطاقة، والطاقة، 0
الشرق: 0، 0، 0 أو 0، 0، الطاقة (صفر النشطة)
الوضع بايت: يتم نقلها 3 مناصب 3 بايت (الافتراضي)
وضع ASCII: يتم نقلها 3 وظائف كنص مفصولة بفواصل (انتهى \ ن)
نشط الدورة: كل انتقال في اتصال Serated
جلسة العمل النشطة: اتصال أبدا مغلقة، ولكن إذا لزم الأمر إعادة الاتصال التلقائي (الافتراضي)
صفر نشط: لا عودة للقيم الصفر بعد الإفراج
صفر المفعلة: عودة السيارات لقيم الصفر بعد الإفراج
نموذج التعليمات البرمجية لملقم على التوت بي:
# تشمل "stdio.h"
# تشمل "stdlib.h"
# تشمل "string.h"
# تشمل "unistd.h"
# تشمل "تميز الكلية / types.h"
# تشمل "تميز الكلية / socket.h"
# تشمل "netinet / in.h"
خطأ باطل (شار CONST * جي اس)
{
perror (جي اس)؛
الخروج (1)؛
}
الباحث الرئيسي (الباحث ARGC، شار * ARGV [])
{
الباحث sockfd، newsockfd، portno، ن.
socklen_t clilen.
عازلة شار [256].
البنية serv_addr sockaddr_in، cli_addr.
sockfd = مقبس (AF_INET، SOCK_STREAM، 0)؛
إذا (sockfd <0)
خطأ ( "خطأ مأخذ افتتاح")؛
bzero ((تشار *) وserv_addr، sizeof (serv_addr))؛
portno = 12345؛
serv_addr.sin_family = AF_INET.
serv_addr.sin_addr.s_addr = INADDR_ANY.
serv_addr.sin_port = htons (portno)؛
إذا (ربط (sockfd، (البنية SOCKADDR *)
وServ_addr، sizeof (serv_addr)) <0)
خطأ ( "خطأ في ملزمة")؛
في حين (1)
{
الاستماع (sockfd، 5)؛
clilen = sizeof (cli_addr)؛
newsockfd = استعرض (sockfd، (البنية SOCKADDR *)
وCli_addr، وclilen)؛
إذا (newsockfd <0)
خطأ ( "خطأ على تقبل")؛
في حين (1)
{
bzero (العازلة، 256)؛
ن = قراءة (newsockfd، العازلة، 3)؛
إذا (ن <3)
{
خطأ ( "خطأ القراءة من مأخذ")؛
كسر.
}
تعويم tmp1 = (تعويم) العازلة [0]؛
إذا (tmp1> 127)
tmp1 - = 256؛
تعويم tmp2 = (تعويم) العازلة [1]؛
إذا (tmp2> 127)
tmp2 - = 256؛
تطفو TMP3 = (تعويم) عازلة [2].
إذا (TMP3> 127)
TMP3 - = 256؛
printf ( "٪ د٪ د٪ د \ ن"، (الباحث) tmp1، (الباحث) tmp2، (الباحث) TMP3)؛
}
وثيقة (newsockfd)؛
}
وثيقة (sockfd)؛
العودة 0؛
}
تاريخ التحديث
23/03/2016