{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/21",
    "result": {"data":{"issuesJson":{"id":"53a995e0-111a-58f7-b2ff-81535f06eca2","title":"stealthcopter/AndroidNetworkTools: 一款能够在安卓手机上执行 ping 等操作的工具。","number":21,"bodyHTML":"<div align=\"center\" dir=\"auto\">\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a><br><br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"right\">Repos</th>\n<th align=\"left\"><a href=\"https://github.com/stealthcopter/AndroidNetworkTools\">stealthcopter/AndroidNetworkTools</a></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><strong>Views</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/3511fa2c8d76b14311fb8d3d23950c2e4da3e5ebb8e813341583c8475c6d3d7a/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c732e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/stealthcopter/AndroidNetworkTools.svg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Stars</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/f2447935f5037fa41c84268b86708c7ad81931ee57fe9350368e268a3b62f702/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c733f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/stealthcopter/AndroidNetworkTools?color=f2f08d&amp;logo=Undertale&amp;logoColor=eb4630\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Forks</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/7bf76d869475187c63581cecb95337892800c1e0a452b8ee8c15b385c02cef6c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c733f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/stealthcopter/AndroidNetworkTools?color=ba86eb&amp;logo=Handshake&amp;logoColor=ea6aa6\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>License</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/a5ed3486304ea6604a2174bd7db342ded7a6b64b9e2336f336636840fd54b8ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c733f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e53556845556741414144414141414177434159414141425841766d48414141414358424957584d41414173544141414c457745416d70775941414144336b6c45515652346e4f335953557a5555426748384a726f57567255474a66456d3773584e63534446784d544c327069347348456778654e526f77586770455742445552522532424e414e4f4b4f4b36366f6f4b4a4742586545475263574163455646475152484677516d483525324630774861655748493944554455354c356b6e6568644f62377a66652532423139636e434a47495243516945596c514237594a4979474c38616f73756c565a36695246516a69474b6b7564576735614c6c704f70704e586e665071773555304459524a6d56786a4367464633424c755a476d416f5655694b4541726d583744375553677351706f72674761336748664b34483663754262435644334771683141352532424c6745253242467749656e514d306a6f446f66714c6f48564e7742796d384370546e416d327a51713073676478624964515a556c416b7150415a3664676a303541446f59526f6f66792532466f5869726f376b3551586a4c6f70677a4b69514e6c4c4461716f4967754577426a7a7150355066446a45394479495879493633464d547751464d43567271774e61763451666f52673538514625324266724d485172454b3844546f434d714e4179574e4866786d54526f4c4f726d5352566747744466714345715a4f4851727a6f34706243557341333431365169364551394b476a6345465267484f724f4b6e5536574162396247455459656b4b7843766a546167394534706a653534446b3551503862624d4859762532464333756541654a6b50304f4778422532424a70426e4172595238455951516e6f4e31414e4661426e5050356c385372736559514c303641646b30464a5938484f5761424d6c6541486a683068506f73497a6c6f3876304125324633345a694f6548726130714b52504d5653493774762532423932747725324676687855654252713456454c674d376642714b354770526d6f514c584e7075625475367a6f4e52706754386e5051627138347764253246494375767978694b4871694e41664933774d367549684271476b4c696977414f734b44714f68743749747239567938536a52424557667941627225324668523142667056514664484a42253246423268683778376a36517077435665655951326b72554235436c636a3641326d3067576a25324244306d4c34397a573563517943484c4e37726a6c6d6d6174457958582532464372547a412532466f51785a6b576c39474a5443566f25324279546a3837253242346769504b6376307149486f344156344430565a727251493334706e70524d36357875652532467a417265453425324654253246536f676c664542794d7369517441546c4c3352414a355948725378365a44665337307337754d486842705225324659423573305057366f455270316236253246667252684b3353444c35546965364f515548516c5133735644752532427a50636b397657453973747225324236496a533967486d5750616861444a25324277434b364e494242587348423948796b587378774470686c436d416476706c6162554a4e6e5a504239342532464e7436784f6538587a4562503257684d335741673147756236744825324233513150673337365239713475716c6e6f36676448476a444f5139306562303141484d3672596975554a314f713472344656756a35765239427a4d3957674e764f7977446869495951467667626366774166774d764863615067425041253246447948476a50624e394138616d6562636477416444354e6633373574787165774e5552656f797677424958594c645170576c6877465771745061435044334173467541535636717171496c62304a766b564331464c39576b4c55556c55574b337a585a4c46432532423125324642726f46746f364f7358497545594a5034447a7a5732594656316f4a614141414141456c46546b5375516d4343\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/stealthcopter/AndroidNetworkTools?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3klEQVR4nO3YSUzUUBgH8JroWVrUGJfEm7sXNcSDFxMTL2pi4sHEgxeNRowXgpEWBDURR%2BNANOKOK66ooKJGBXeEGRcWAcEVFGQRHFwQmH5%2F0wHaeWHI9DUDU5L5knehdOb7zfe%2B19cnCJGIRCQiEYlQB7YJIyGL8aosulVZ6iRFQjiGKkudWg5aLlpOppNXnfPqw5U0DYRJmVxjCgFF3BLuZGmAoVUiKEArmX7D7USgsQporgGa3gHfK4H6cuBbCVD3Gqh1A5%2BLgE%2BFwIenQM0joDofqLoHVNwBym8CpTnAm2zQq0sgdxbIdQZUlAkqPAZ6dgj05ADoYRoofy%2FoXiro7k5QXjLopgzKiQNlLDaqoIguEwBjzqP5PfDjE9DyIXyI63FMTwQFMCVrqwNav4QfoRg58QF%2BfrMHQrEK8DToCMqNAyWNHfxmTRoLOrmSRVgGtDfqCEqZOHQrzo4pbCUsA3416Qi6EQ9KGjcEFRgHOrOKnU6WAb9bGETYekKxCvjTag9E4pje54Dk5QP8bbMHYv%2FC3ueAeJkP0OGxB%2BJpBnArYR8EYQQnoN1ANFaBnPP5l8SrseYQL06Adk0FJY8HOWaBMleAHjh0hPosIzlo8v0A%2F34ZiOeHra0qKRPMVSI7tv%2B92tw%2FvhxUeBRq4VELgM7fBqK5GpRmoQLXNpubTu6zoNRpgT8nPQbq84wd%2FICuvyxiKHqiNAfI3wM6uIhBqGkLiiwAOsKDqOht7Itr9Vy8SjRBEWfyAbr%2FhR1BfpVQFdHJB%2FB2hh7x7j6QpwCVeeYQ2krUB5Clcj6A2m0gWj%2BD0mL49zW5cQyCHLN7rjlmmatEyXX%2FCrTzA%2FoQxZkWl9GJTCVo%2ByTj87%2B4giPKcv0qIHo4AV4D0VZrrQI34pnpRM65xue%2FzAreE4%2FT%2FSoglfEByMsiQtATlL3RAJ5YHrSx6ZDfS70s7uMHhBpR%2FYB5s0PW6oERp1b6%2FfrRhK3SDL5Tie6OQUHQlQ3sVDu%2BzPck9vWE9str%2B6IjS9gHmWPahaDJ%2BwCK6NIBBXsHB9HykXsxwDphlCmAdvplabUJNnZPB94%2FNt6xOe8XzEbP2WhM3WAg1Gub6tH%2B3Q1Pg376R9q4uqlno6gdHGjDOQ90eb01AHM6rYiuUJ1Oq4r4FVuj5vR9BzM9WgNvOywDhiIYQFvgbcfwAfwMvHcaPgBPA%2FDyHGjPbN9A8amebcdwAdD5Nf375txqewNUReoyvwBIXYLdQpWlhwFWqtPaCPD3AsFuASV6qqqIlb0JvkVC1FL9WkLUUlUWK3zXZLFC%2B1%2FBroFto6OsXIuEYJP4DzzW2YFV1oJaAAAAAElFTkSuQmCC\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>UpdatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/92e5285d4899b96d52963e5875d1ac09e546d1260766b6f975ee5901c855408d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c733f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/stealthcopter/AndroidNetworkTools?display_timestamp=committer&amp;logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=UpdatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>CreatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/5a7e78a18166e69e723e652af33f401a8a272082814a3add7204e57adcffc657/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c733f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/stealthcopter/AndroidNetworkTools?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=CreatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<a href=\"https://github.com/opsre/awesome-ops\">\n</a><p dir=\"auto\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b964a36ea4078c39f603d46a29436371c7541a2f26e0228d7b21b9d9805b43d3/68747470733a2f2f736f6369616c6966792e6769742e63692f6f707372652f617765736f6d652d6f70732f696d6167653f6465736372697074696f6e3d3126666f6e743d42697474657226666f726b733d31266973737565733d31266c616e67756167653d31266c6f676f3d6874747073253341253246253246617661746172732e67697468756275736572636f6e74656e742e636f6d25324675253246313838353638303230266e616d653d31266f776e65723d31267061747465726e3d436972637569742b426f6172642670756c6c733d31267374617267617a6572733d31267468656d653d4c69676874\" alt=\"\" data-canonical-src=\"https://socialify.git.ci/opsre/awesome-ops/image?description=1&amp;font=Bitter&amp;forks=1&amp;issues=1&amp;language=1&amp;logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F188568020&amp;name=1&amp;owner=1&amp;pattern=Circuit+Board&amp;pulls=1&amp;stargazers=1&amp;theme=Light\" style=\"max-width: 100%;\"></a></p>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a>\n</div>\n<h1 dir=\"auto\">Android Network Tools <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"./app/src/main/res/mipmap-xhdpi/ic_launcher.png\"><img src=\"./app/src/main/res/mipmap-xhdpi/ic_launcher.png\" alt=\"image\" style=\"max-width: 100%;\"></a></h1>\n<p dir=\"auto\"><a href=\"https://android-arsenal.com/details/1/3112\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/b1862a263cf4af990221e85296e549e05b4ba55dc794045f42a71c3754f3dcb2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f416e64726f6964253230417273656e616c2d416e64726f69644e6574776f726b546f6f6c732d677265656e2e7376673f7374796c653d74727565\" alt=\"Android Arsenal\" data-canonical-src=\"https://img.shields.io/badge/Android%20Arsenal-AndroidNetworkTools-green.svg?style=true\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://circleci.com/gh/stealthcopter/AndroidNetworkTools\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/c10e7edc1758c124227c2b0a1c066a9b6d030975420338a88b97b0550d8cb813/68747470733a2f2f636972636c6563692e636f6d2f67682f737465616c7468636f707465722f416e64726f69644e6574776f726b546f6f6c732e7376673f7374796c653d737667\" alt=\"CircleCI\" data-canonical-src=\"https://circleci.com/gh/stealthcopter/AndroidNetworkTools.svg?style=svg\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://www.buymeacoffee.com/stealthcopter\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/55488e864918672bf8082369fa4faa8475446a6b4a2e468f1b072c3649a6571b/68747470733a2f2f63646e2e6275796d6561636f666665652e636f6d2f627574746f6e732f76322f617269616c2d79656c6c6f772e706e67\" height=\"20px\" data-canonical-src=\"https://cdn.buymeacoffee.com/buttons/v2/arial-yellow.png\" style=\"max-width: 100%; height: auto; max-height: 20px;\"></a></p>\n<p dir=\"auto\">Disappointed by the lack of good network apis in android / java I developed a collection of handy networking tools for everyday android development.</p>\n<ul dir=\"auto\">\n<li>Port Scanning</li>\n<li>Subnet Device Finder (discovers devices on local network)</li>\n<li>Ping</li>\n<li>Wake-On-Lan</li>\n<li>&amp; More :)</li>\n</ul>\n<h2 dir=\"auto\">General info</h2>\n<p dir=\"auto\">The javadoc should provide all information needed to understand the methods, but if not feel free to add a issue in github and I'll address any questions! :)</p>\n<h1 dir=\"auto\">Support</h1>\n<p dir=\"auto\">If you love what I'm doing with Android Network Tools and my other projects, you can now support my work directly! By buying me a coffee ☕, you're not just fueling my caffeine needs – you're helping me dedicate more time to developing and improving these open source projects. Every coffee counts and brings more innovation to the cybersecurity world. Thank you for your support – it means the world to me and the open source community!</p>\n<p dir=\"auto\"><a href=\"https://www.buymeacoffee.com/stealthcopter\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/55488e864918672bf8082369fa4faa8475446a6b4a2e468f1b072c3649a6571b/68747470733a2f2f63646e2e6275796d6561636f666665652e636f6d2f627574746f6e732f76322f617269616c2d79656c6c6f772e706e67\" height=\"50px\" data-canonical-src=\"https://cdn.buymeacoffee.com/buttons/v2/arial-yellow.png\" style=\"max-width: 100%; height: auto; max-height: 50px;\"></a></p>\n<h3 dir=\"auto\">Sample app</h3>\n<p dir=\"auto\">The sample app is published on Google Play &amp; F-Droid to allow you to quickly and easier test the library. Enjoy! And please do feedback to us if your tests produce different results.</p>\n<p dir=\"auto\"><a href=\"https://f-droid.org/packages/com.stealthcotper.networktools/\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/79a6958a9201a72b59408c0b9a8109c2cc560b7a0e83e608f9d4cf8a4455ba80/68747470733a2f2f6664726f69642e6769746c61622e696f2f617274776f726b2f62616467652f6765742d69742d6f6e2e706e67\" alt=\"Get it on F-Droid\" height=\"70\" data-canonical-src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\" style=\"max-width: 100%; height: auto; max-height: 70px;\"></a><br>\n<a href=\"https://play.google.com/store/apps/details?id=com.stealthcotper.networktools\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/1ddf90e524a4bfe8b77f9a6902d54fc708380389b7e0d7f9ad29196a799e77db/68747470733a2f2f706c61792e676f6f676c652e636f6d2f696e746c2f656e5f75732f6261646765732f696d616765732f67656e657269632f656e2d706c61792d62616467652e706e67\" alt=\"Get it on Google Play\" height=\"70\" data-canonical-src=\"https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png\" style=\"max-width: 100%; height: auto; max-height: 70px;\"></a></p>\n<h2 dir=\"auto\">Usage</h2>\n<h3 dir=\"auto\">Add as dependency</h3>\n<p dir=\"auto\">This library is not yet released in Maven Central, until then you can add as a library module or use JitPack.io</p>\n<p dir=\"auto\">add remote maven url</p>\n<div class=\"highlight highlight-source-groovy notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"\n    repositories {\n        maven {\n            url &quot;https://jitpack.io&quot;\n        }\n    }\"><pre class=\"notranslate\">    repositories {\n        maven {\n            url <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>https://jitpack.io<span class=\"pl-pds\">\"</span></span>\n        }\n    }</pre></div>\n<p dir=\"auto\">then add a library dependency. <strong>Remember</strong> to check for latest release <a href=\"https://github.com/stealthcopter/AndroidNetworkTools/releases/\">here</a></p>\n<div class=\"highlight highlight-source-groovy notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"    dependencies {\n        compile 'com.github.stealthcopter:AndroidNetworkTools:0.4.5.3'\n    }\"><pre class=\"notranslate\">    dependencies {\n        compile <span class=\"pl-s\"><span class=\"pl-pds\">'</span>com.github.stealthcopter:AndroidNetworkTools:0.4.5.3<span class=\"pl-pds\">'</span></span>\n    }</pre></div>\n<h3 dir=\"auto\">Add permission</h3>\n<p dir=\"auto\">Requires internet permission (obviously...)</p>\n<div class=\"highlight highlight-text-xml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;\"><pre class=\"notranslate\">  &lt;<span class=\"pl-ent\">uses-permission</span> <span class=\"pl-e\">android</span><span class=\"pl-e\">:</span><span class=\"pl-e\">name</span>=<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>android.permission.INTERNET<span class=\"pl-pds\">\"</span></span> /&gt;</pre></div>\n<h3 dir=\"auto\">Port Scanning</h3>\n<p dir=\"auto\">A simple java based TCP / UDP port scanner, fast and easy to use. By default it will try and guess the best timeout and threads to use while scanning depending on if the address looks like localhost, local network or remote. You can override these yourself by calling setNoThreads() and setTimeoutMillis()</p>\n<div class=\"highlight highlight-source-java notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"    // Synchronously\n    ArrayList&lt;Integer&gt; openPorts = PortScan.onAddress(&quot;192.168.0.1&quot;).setMethodUDP().setPort(21).doScan();\n\n    // Asynchronously\n    PortScan.onAddress(&quot;192.168.0.1&quot;).setTimeOutMillis(1000).setPortsAll().setMethodTCP().doScan(new PortScan.PortListener() {\n      @Override\n      public void onResult(int portNo, boolean open) {\n        if (open) // Stub: found open port\n      }\n\n      @Override\n      public void onFinished(ArrayList&lt;Integer&gt; openPorts) {\n        // Stub: Finished scanning\n      }\n    });\n\"><pre class=\"notranslate\">    <span class=\"pl-c\">// Synchronously</span>\n    <span class=\"pl-smi\">ArrayList</span>&lt;<span class=\"pl-smi\">Integer</span>&gt; <span class=\"pl-s1\">openPorts</span> = <span class=\"pl-smi\">PortScan</span>.<span class=\"pl-en\">onAddress</span>(<span class=\"pl-s\">\"192.168.0.1\"</span>).<span class=\"pl-en\">setMethodUDP</span>().<span class=\"pl-en\">setPort</span>(<span class=\"pl-c1\">21</span>).<span class=\"pl-en\">doScan</span>();\n\n    <span class=\"pl-c\">// Asynchronously</span>\n    <span class=\"pl-smi\">PortScan</span>.<span class=\"pl-en\">onAddress</span>(<span class=\"pl-s\">\"192.168.0.1\"</span>).<span class=\"pl-en\">setTimeOutMillis</span>(<span class=\"pl-c1\">1000</span>).<span class=\"pl-en\">setPortsAll</span>().<span class=\"pl-en\">setMethodTCP</span>().<span class=\"pl-en\">doScan</span>(<span class=\"pl-k\">new</span> <span class=\"pl-smi\">PortScan</span>.<span class=\"pl-smi\">PortListener</span>() {\n      <span class=\"pl-c1\">@</span><span class=\"pl-c1\">Override</span>\n      <span class=\"pl-k\">public</span> <span class=\"pl-smi\">void</span> <span class=\"pl-en\">onResult</span>(<span class=\"pl-smi\">int</span> <span class=\"pl-s1\">portNo</span>, <span class=\"pl-smi\">boolean</span> <span class=\"pl-s1\">open</span>) {\n        <span class=\"pl-k\">if</span> (<span class=\"pl-s1\">open</span>) <span class=\"pl-c\">// Stub: found open port</span>\n      }\n\n      <span class=\"pl-c1\">@</span><span class=\"pl-c1\">Override</span>\n      <span class=\"pl-k\">public</span> <span class=\"pl-smi\">void</span> <span class=\"pl-en\">onFinished</span>(<span class=\"pl-smi\">ArrayList</span>&lt;<span class=\"pl-smi\">Integer</span>&gt; <span class=\"pl-s1\">openPorts</span>) {\n        <span class=\"pl-c\">// Stub: Finished scanning</span>\n      }\n    });</pre></div>\n<h3 dir=\"auto\">Subnet Devices</h3>\n<p dir=\"auto\">Finds devices that respond to ping that are on the same subnet as the current device. You can set the timeout for the ping with setTimeOutMillis() [default 2500] and the number of threads with setNoThreads() [default 255]</p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"    // Asynchronously\n    SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() {\n        @Override\n        public void onDeviceFound(Device device) {\n            // Stub: Found subnet device\n        }\n\n        @Override\n        public void onFinished(ArrayList&lt;Device&gt; devicesFound) {\n            // Stub: Finished scanning\n        }\n    });\n\"><pre class=\"notranslate\"><code class=\"notranslate\">    // Asynchronously\n    SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() {\n        @Override\n        public void onDeviceFound(Device device) {\n            // Stub: Found subnet device\n        }\n\n        @Override\n        public void onFinished(ArrayList&lt;Device&gt; devicesFound) {\n            // Stub: Finished scanning\n        }\n    });\n\n</code></pre></div>\n<h3 dir=\"auto\">Ping</h3>\n<p dir=\"auto\">Uses the native ping binary if available on the device (some devices come without it) and falls back to a TCP request on port 7 (echo request) if not.</p>\n<div class=\"highlight highlight-source-java notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"     // Synchronously \n     PingResult pingResult = Ping.onAddress(&quot;192.168.0.1&quot;).setTimeOutMillis(1000).doPing();\n     \n     // Asynchronously\n     Ping.onAddress(&quot;192.168.0.1&quot;).setTimeOutMillis(1000).setTimes(5).doPing(new Ping.PingListener() {\n      @Override\n      public void onResult(PingResult pingResult) {\n        ...\n      }\n    });\"><pre class=\"notranslate\">     <span class=\"pl-c\">// Synchronously </span>\n     <span class=\"pl-smi\">PingResult</span> <span class=\"pl-s1\">pingResult</span> = <span class=\"pl-smi\">Ping</span>.<span class=\"pl-en\">onAddress</span>(<span class=\"pl-s\">\"192.168.0.1\"</span>).<span class=\"pl-en\">setTimeOutMillis</span>(<span class=\"pl-c1\">1000</span>).<span class=\"pl-en\">doPing</span>();\n     \n     <span class=\"pl-c\">// Asynchronously</span>\n     <span class=\"pl-smi\">Ping</span>.<span class=\"pl-en\">onAddress</span>(<span class=\"pl-s\">\"192.168.0.1\"</span>).<span class=\"pl-en\">setTimeOutMillis</span>(<span class=\"pl-c1\">1000</span>).<span class=\"pl-en\">setTimes</span>(<span class=\"pl-c1\">5</span>).<span class=\"pl-en\">doPing</span>(<span class=\"pl-k\">new</span> <span class=\"pl-smi\">Ping</span>.<span class=\"pl-smi\">PingListener</span>() {\n      <span class=\"pl-c1\">@</span><span class=\"pl-c1\">Override</span>\n      <span class=\"pl-k\">public</span> <span class=\"pl-smi\">void</span> <span class=\"pl-en\">onResult</span>(<span class=\"pl-smi\">PingResult</span> <span class=\"pl-s1\">pingResult</span>) {\n        ...\n      }\n    });</pre></div>\n<p dir=\"auto\">Note: If we do have to fall back to using TCP port 7 (the java way) to detect devices we will find significantly less than with the native ping binary. If this is an issue you could consider adding a ping binary to your application or device so that it is always available.</p>\n<p dir=\"auto\">Note: If you want a more advanced portscanner you should consider compiling nmap into your project and using that instead.</p>\n<h3 dir=\"auto\">Wake-On-Lan</h3>\n<p dir=\"auto\">Sends a Wake-on-Lan packet to the IP / MAC address</p>\n<div class=\"highlight highlight-source-java notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"      String ipAddress = &quot;192.168.0.1&quot;;\n      String macAddress = &quot;01:23:45:67:89:ab&quot;;\n      WakeOnLan.sendWakeOnLan(ipAddress, macAddress);\"><pre class=\"notranslate\">      <span class=\"pl-smi\">String</span> <span class=\"pl-s1\">ipAddress</span> = <span class=\"pl-s\">\"192.168.0.1\"</span>;\n      <span class=\"pl-smi\">String</span> <span class=\"pl-s1\">macAddress</span> = <span class=\"pl-s\">\"01:23:45:67:89:ab\"</span>;\n      <span class=\"pl-smi\">WakeOnLan</span>.<span class=\"pl-en\">sendWakeOnLan</span>(<span class=\"pl-s1\">ipAddress</span>, <span class=\"pl-s1\">macAddress</span>);</pre></div>\n<h3 dir=\"auto\">Misc</h3>\n<p dir=\"auto\">Other useful methods:</p>\n<div class=\"highlight highlight-source-java notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"      // Get a MAC Address from an IP address in the ARP Cache\n      String ipAddress = &quot;192.168.0.1&quot;;\n      String macAddress = ARPInfo.getMacFromArpCache(ipAddress);\"><pre class=\"notranslate\">      <span class=\"pl-c\">// Get a MAC Address from an IP address in the ARP Cache</span>\n      <span class=\"pl-smi\">String</span> <span class=\"pl-s1\">ipAddress</span> = <span class=\"pl-s\">\"192.168.0.1\"</span>;\n      <span class=\"pl-smi\">String</span> <span class=\"pl-s1\">macAddress</span> = <span class=\"pl-smi\">ARPInfo</span>.<span class=\"pl-en\">getMacFromArpCache</span>(<span class=\"pl-s1\">ipAddress</span>);</pre></div>\n<h2 dir=\"auto\">Building</h2>\n<p dir=\"auto\">It's a standard gradle project.</p>\n<h1 dir=\"auto\">Contributing</h1>\n<p dir=\"auto\">I welcome pull requests, issues and feedback.</p>\n<ul dir=\"auto\">\n<li>Fork it</li>\n<li>Create your feature branch (<code class=\"notranslate\">git checkout -b my-new-feature</code>)</li>\n<li>Commit your changes (<code class=\"notranslate\">git commit -am 'Added some feature'</code>)</li>\n<li>Push to the branch (<code class=\"notranslate\">git push origin my-new-feature</code>)</li>\n<li>Create new Pull Request</li>\n</ul>","updatedAt":"2025-05-21T15:48:21Z","upvoteCount":null,"author":{"login":"eryajf","avatarUrl":"https://avatars.githubusercontent.com/u/33259379?u=e4a4090a38ac2473aaed4ef9945233636776c6c3&v=4","url":"https://github.com/eryajf"},"category":null,"labels":{"edges":[{"node":{"name":"更多","color":"25B472"}},{"node":{"name":"软件工具","color":"4aa513"}},{"node":{"name":"stealthcopter","color":"aea7b4"}}]},"comments":{"edges":[]}}},"pageContext":{"number":21,"previous":{"title":"allinssl/allinssl: 一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理工具。","number":20},"next":{"title":"qishibo/AnotherRedisDesktopManager: 🚀 更快、更好、更稳定的 Redis 桌面(GUI)管理客户端，支持多平台","number":22}}},
    "staticQueryHashes": ["151096407","2861350382"]}