ตรวจสอบว่าคอมพิวเตอร์เชื่อมต่อกับอินเทอร์เน็ตหรือไม่


49

เขียนโปรแกรมซึ่งตามไม่ว่าจะเป็นสคริปต์ที่มีการเข้าถึงอินเทอร์เน็ตที่ผลิตออกซึ่งเป็น"Truthy / Falsey" คุณอาจลองและเชื่อมต่อกับเว็บไซต์ใด ๆ ที่มีอยู่ตามดุลยพินิจของคุณเอง (อย่าใช้ไซต์ที่ร่มรื่นซึ่งมีเวลาในการทำงานเพียง 10% - พยายามที่จะรักษาสถานะการทำงานต่อปีที่สูงกว่า 80%) หากไซต์หยุดทำงานโปรแกรมของคุณไม่ต้องทำงาน

มันจะต้องเป็นโปรแกรมแบบสแตนด์อโลนหรือฟังก์ชั่น คุณอาจใช้ห้องสมุดนอกห้องสมุดมาตรฐานเพื่อให้บรรลุนี้ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัสกอล์ฟดังนั้นรหัสที่มีจำนวนไบต์สั้นที่สุดจะเป็นผู้ชนะ

ตัวอย่างรหัสเทียม:

function a:
    try:
        connect to internet 
        return 1
    catch error:
        return 0

นี่คือการโพสต์ครั้งแรกของฉันในการตีกอล์ฟดังนั้นถ้าสิ่งนี้ละเมิดกฎใด ๆ หรือเป็นผู้ล่อลวงโปรดแจ้งเตือนฉัน

แก้ไข: เนื่องจากข้อเสนอแนะจำนวนมากฉันได้ลบข้อ จำกัด จำนวน UTF-8 ไบต์


4
แทนtrueและfalseผมขอแนะนำให้ช่วยให้การใด ๆ ของเราค่าเริ่มต้นสำหรับ truthy และ falsiness นอกจากนี้ทางอินเทอร์เน็ตคุณหมายถึงเครือข่ายนอกเครือข่ายท้องถิ่นของคุณหรือไม่ โปรแกรมต่างๆยังคงทำงานอยู่หรือไม่หากพูดว่า google ไม่ทำงานหรือมีเว็บไซต์ขนาดใหญ่อื่น ๆ
Blue

3
จำนวนไบต์มักทำในการเข้ารหัสดั้งเดิมหรือภาษาที่สะดวกที่สุดซึ่งไม่ใช่ UTF-8 เสมอ เว้นแต่คุณจะมีเหตุผลที่ดีในการบังคับใช้ UTF-8 ฉันคิดว่าการเข้ารหัสควรจะถูกเลือกตามความต้องการของโปรแกรมเมอร์
Luis Mendo

4
ผมเห็นเกือบทุกคนใช้g.gl/http://g.gl/แต่to./http://to./น่าจะเป็นหนึ่งไบต์สั้น (ไม่ทั้งหมดภาษาเห็นว่ามันเป็น URL ที่ถูกต้องผ่าน)
Kevin Cruijssen

9
ผู้บังคับการเรือขั้นพื้นฐาน:PRINT "0"
ทำเครื่องหมาย

3
เครื่องจักรที่ฉันกำลังพิมพ์นี้อยู่นั้นเป็นส่วนหนึ่งของ "อินเทอร์เน็ต" ซึ่งสามารถเข้าถึงได้จากภายนอก (ผ่าน NAT และการส่งต่อพอร์ต) ดังนั้นถ้าคุณคิดว่ามันว่า "การตรวจสอบอินเทอร์เน็ต" สคริปต์สามารถอาจจะลดลงไป "true" :)
เรือเหาะ

คำตอบ:


29

Bash (กับdnsutils ), 3 ไบต์

ส่งคำขอ DNS สำหรับ "." (DNS root) รหัสออกเป็น 0 เพื่อความสำเร็จและ> 0 มิฉะนั้น

แข็งแรงเล่นกอล์ฟ

dig

ทดสอบ

% dig >/dev/null; echo $?;        
0

% nmcli nm wifi off
% dig >/dev/null; echo $?;
9

คำปฏิเสธ

วิธีนี้จะใช้งานได้ก็ต่อเมื่อเซิร์ฟเวอร์DNSของคุณอยู่ในเครือข่ายของผู้ให้บริการเช่นใน "อินเทอร์เน็ต" (เนื่องจากเครือข่ายผู้ให้บริการของคุณเป็นส่วนหนึ่งของมัน) หรือหากระบบของคุณใช้เซิร์ฟเวอร์ DNS สาธารณะ (เช่น 8.8.8.8 จาก Google ซึ่งใช้ระบบ Android) มิฉะนั้นคุณสามารถรับสำเนาแคชจากเซิร์ฟเวอร์LANท้องถิ่น(หรือ localhost)

แต่ฉันคิดว่านี่ไม่ได้ขัดกับกฎของเนื่องจากมีระบบมากกว่าหนึ่งระบบที่ทำงานได้ตามที่ต้องการ

วิธีการ Pure-HTTP ยังสามารถให้ผลบวกเท็จเนื่องจากพร็อกซีแคชกลางและไม่รับประกันว่าจะทำงานได้ทุกที่ดังนั้นจึงไม่ใช่สิ่งที่แปลกใหม่สำหรับวิธีนี้

รุ่นที่น่าเชื่อถือมากขึ้นเล็กน้อย 8 ไบต์

dig +tra

(ส่วยเล็ก ๆ น้อย ๆ ที่ @ Dig ital Tra uma!)

เปิดใช้งาน "โหมดติดตาม" ซึ่งจะบังคับให้เครื่องขุดทำการค้นหาแบบเรียกซ้ำด้วยตัวเอง (ดูhttps://serverfault.com/a/778830 ) เพื่อหลีกเลี่ยงปัญหาแคชใด ๆ


อ้างจากman dig: เว้นแต่จะบอกว่าจะสอบถามเซิร์ฟเวอร์ชื่อที่เฉพาะเจาะจงจะพยายามขุดแต่ละเซิร์ฟเวอร์ที่ระบุไว้ใน/etc/resolv.conf ถ้าไม่มีที่อยู่เซิร์ฟเวอร์ที่ใช้งานได้มีการค้นพบขุดจะส่งแบบสอบถามไปยังโฮสต์ท้องถิ่น
ติตัส

@Tios, ใช่แล้ว, ถูกต้อง, โปรดดู "ข้อจำกัดความรับผิดชอบ" ของคำตอบของฉัน, แต่ตราบใดที่เซิร์ฟเวอร์ DNS ของคุณ (ตามที่ระบุใน resolv.conf ของคุณ) อยู่ด้านผู้ให้บริการของคุณ, มันใช้งานได้ดี
เรือเหาะ

โซลูชันของคุณขึ้นอยู่กับการติดตั้งที่ไม่ใช่ค่าเริ่มต้น ฉันคิดว่าการใช้ช่องโหว่ คุณยังสามารถชนะด้วยจำนวนไบต์ที่เพิ่มขึ้นสองไบต์
ติตัส

1
> โซลูชันของคุณขึ้นอยู่กับการติดตั้งที่ไม่ใช่ค่าเริ่มต้นมันเป็นวิธีการทำงานบนเครื่องของฉัน (และนั่นก็เพียงพอแล้วสำหรับ Meta) ยิ่งกว่านั้นการใช้เซิร์ฟเวอร์ DNS ของผู้ให้บริการของคุณนั้นเป็นการตั้งค่าทั่วไปที่ค่อนข้างแน่นอน (และโดยปกติจะอยู่ใน resolv.conf ของคุณด้วย)
เรือเหาะ

2
การตั้งค่าเริ่มต้นจะขึ้นอยู่กับการตั้งค่าที่คุณใช้ในเวลาติดตั้งหากคุณกำหนดค่าเครือข่ายโดยใช้ DHCP แล้ว resolv.conf อาจชี้ไปที่เราเตอร์ของคุณ หากคุณกำหนดค่าเครือข่ายด้วยตนเองมันจะมีเซิร์ฟเวอร์ DNS ที่คุณเสนอชื่อ
Jasen

19

Bash + GNU utils, 8

  • บันทึก 5 ไบต์ด้วย @Muzer
wget to.

คำตอบเชลล์อื่น ๆ ตรวจสอบโค้ดส่งคืนและสะท้อนเอาต์พุตสถานะบางอย่างตามนั้น สิ่งนี้ไม่จำเป็น โค้ดส่งคืนเชลล์เป็นโค้ด Truthy / Falsey ที่สามารถใช้งานได้และสามารถเข้าถึงได้ใน$?พารามิเตอร์ซึ่งเป็นสำนวนสำหรับการทุบตี โค้ดส่งคืน 0 หมายถึง True โค้ดส่งคืน> 0 หมายถึงเท็จ

ในการใช้งาน:

ubuntu@ubuntu:~$ wget to.
--2017-01-13 09:10:51--  http://to./
Resolving to. (to.)... 216.74.32.107, 216.74.32.107
Connecting to to. (to.)|216.74.32.107|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: index.html.6

index.html.6        100%[===================>]  11.24K  --.-KB/s    in 0.04s   

2017-01-13 09:10:51 (285 KB/s) - index.html.6 saved [11510/11510]

ubuntu@ubuntu:~$ echo $?
0
ubuntu@ubuntu:~$ sudo ifconfig ens33 down
ubuntu@ubuntu:~$ wget to.
--2017-01-13 09:11:00--  http://to./
Resolving to. (to.)... failed: Temporary failure in name resolution.
wget: unable to resolve host address to.’
ubuntu@ubuntu:~$ echo $?
4
ubuntu@ubuntu:~$ sudo ifconfig ens33 up
ubuntu@ubuntu:~$ # Local network up, upstream link down
ubuntu@ubuntu:~$ wget to.
--2017-01-13 09:11:34--  http://to./
Resolving to. (to.)... failed: Name or service not known.
wget: unable to resolve host address to.’
ubuntu@ubuntu:~$ echo $?
4
ubuntu@ubuntu:~$ 

2
ใช้โดเมนที่ต้องการto.แทนที่จะ8.8.8.8บันทึกค่อนข้างมาก
Muzer

@ Muzer ใช่ - ขอบคุณ
Digital Trauma

2
@Muzer เว้นแต่จะมีในท้องถิ่นtoที่จำแนกมีการกำหนดค่าที่จะหาก็ยังจะไปขวาหนึ่ง (และอาจจะความสามารถในการ ping ท้องถิ่นtoก็เพียงพอของการเชื่อมต่อกับอินเทอร์เน็ต )
คริสเตียน Sievers

2
@ Muzer ตกลงtoบางครั้งใช้งานได้และบางครั้งก็ไม่ ฉันเดาแคชบางอย่างเกิดขึ้น ฉันจะใช้to.เพื่อความปลอดภัย
บาดเจ็บทางดิจิตอล

4
ทำไมจึงเป็นโดเมนที่ถูกต้อง
คอส

9

แบตช์ 8 ไบต์

ping to.

pingจะตั้งERRORLEVELเป็น1หากไม่สามารถแก้ไขหรือเข้าถึงที่อยู่ได้


7

05AB1E , 11 9 ไบต์

บันทึก 2 ไบต์ใน "ถึง" มารยาทของผู้บังคับบัญชา EV3

…to..wgX›

ตรวจสอบว่าความยาวของเนื้อหาที่เป็นที่http: // ไป มากกว่า 1
.wส่งคืนค่า 0 เนื่องจากข้อผิดพลาด


1
+1 สำหรับคำตอบ
05AB1E ทุกครั้ง

@WordDoughnut และนั่นคือเหตุผลที่?
mbomb007

3
@ mbomb007 เพิ่งเป็นแฟนตัวยงของภาษาตั้งแต่ Adnan เริ่มทำงานและโพสต์ที่นี่; มันเป็นภาษาที่น่าสนใจที่จะเจาะลึก
WorseDoughnut

1
@WordDoughnut มีการเชื่อมโยงหลายมิติในคำตอบแล้ว
mbomb007

คุณไม่สามารถเชื่อมต่อกับ การบันทึก byte?
ev3commander

5

MATL , 15 14 ไบต์

หนึ่งไบต์บันทึกขอบคุณคำแนะนำของKevin Cruijssen

'http://to.'Xi

เอาต์พุตผ่าน STDOUT สิ่งนี้แสดงสตริงที่ไม่ว่างที่มีตัวอักษรที่ไม่ใช่ศูนย์ (ซึ่งเป็นจริง) หากมีการเชื่อมต่ออินเทอร์เน็ต และไม่แสดงสิ่งใด (ซึ่งเป็นเท็จ) หากไม่มีการเชื่อมต่อ

ไม่สามารถทดสอบทางออนไลน์ได้เนื่องจากXiไม่ได้รับอนุญาตในล่ามออนไลน์

คำอธิบาย

'http://to.'  % Push this string
Xi            % Return contents of that URL as a string. If there is no Internet
              % connection this gives an error, with no output on STDOUT

คุณคิดว่าurlread('http://g.gl')จะเป็นคำตอบที่ดีหรือไม่? มันจะเกิดข้อผิดพลาดและปล่อยให้เวิร์กสเปซว่างหากการเชื่อมต่อไม่ทำงาน มันจะแสดงข้อความแสดงข้อผิดพลาด แต่ในทางเทคนิคแล้วนั่นคือ STDERR ... ? ฉันคิดว่ามันเป็นบิตของการยืดเพื่อให้ฉันไม่ได้ด้วยวิธีนี้ แต่การข้ามtryไปดูเหมือนจะให้ผลลัพธ์เดียวกับรหัสของคุณหรือ? คุณปล่อยให้สแต็กว่างเปล่าใช่ไหม คำตอบที่ดี ... :)
Stewie Griffin

@ StewieGriffin ขอบคุณ! ใช่ฉันคิดว่าurlread('http://g.gl')ถูกต้อง (และเป็นเช่นเดียวกับรหัสของฉัน) เป็น STDERR จะถูกละเว้นโดยค่าเริ่มต้นและ STDOUT ว่างเปล่าเป็นเท็จใน MATLAB
Luis Mendo

1
จะใช้กับftpแทนhttp- บันทึกไบต์อื่นได้หรือไม่
Floris

1
@ Floris ยินดีที่ได้พบคุณที่นี่ด้วย! น่าเสียดายที่ftpดูเหมือนว่าจะใช้งานไม่ได้กับเว็บไซต์นั้น
Luis Mendo

1
สวัสดี @LuisMendo ใช่บางครั้งฉันก็ด้อม ๆ มอง ๆ เว็บไซต์อื่น ๆ ... เลวเกินไป ftp ไม่ทำงาน!
Floris

5

Bash 66 62 21 ไบต์

ping -c1 g.gl echo $?

ขอบคุณ @Alex L. สำหรับเคล็ดลับการย่อ URL

เวอร์ชันที่ไม่ถูกปรับแต่ง:

r=$(ping -c1 g.gl)
if [ $? -ne 0 ];
 then echo "0"
else echo "1"
fi

นี่เป็นคำตอบแรกของฉันใน Bash ฉันไม่แน่ใจว่าฉันทำสคริปสั้นพอ


ฉันคิดว่าคุณสามารถใช้ URL ที่สั้นกว่า google.com ซึ่งจะช่วยให้คุณย่อรหัสได้ บางอย่างเช่น g.gl
HyperNeutrino

3
คุณควรจะสามารถecho $?แทนที่คำสั่งนั้นทั้งหมดได้
SomethingDark

4
คุณพลาด "บาง" ;ในบรรทัด golfed
Ipor Sircer

@IporSircer ขอบคุณ :) @SomethingDark สวัสดีecho $? พิมพ์0ถ้าสำเร็จหรืออื่น ๆ มันกลับมา2ในกรณีนี้ ฉันไม่ได้ดูซอร์สโค้ดของการใช้งานpingแต่ฉันสมมติว่ามีโค้ดส่งคืนที่แตกต่างกันขึ้นอยู่กับการกำหนด ดังนั้นฉันใช้if elseกลยุทธ์
Abel Tom

@AbelTom - อาจเป็นที่ถกเถียงกันอยู่ว่า 0 คือความจริงและไม่ใช่ 0 นั้นเป็นเท็จ
SomethingDark

5

R, 20 ไบต์

curl::has_internet()

มีฟังก์ชั่นสำหรับงานนี้อย่างแน่นอนในcurlแพ็คเกจ


1
+1 ดีมาก สำหรับผู้ที่อยากรู้อยากเห็นเช่นฉันฟังก์ชั่นนี้จะถูกนำไปใช้เป็น:function() !is.null(nslookup("r-project.org", error = FALSE))
plannapus

จำนวนที่เทียบเท่า: httr::url_ok('g.gl')(แม้ว่าจะถูกปฏิเสธ)
Jonathan Carroll

5

Java, 72 ไบต์

a->new java.net.InetSocketAddress("to.",80).getAddress().isReachable(9);

3
คุณต้องระบุชื่อที่ผ่านการรับรองjava.net.InetSocketAddress

4

Perl, 15 ไบต์

print`curl to.`

ทำงานด้วย:

perl -e 'print`curl to.`' 2> /dev/null

curlเอาท์พุทSTDERRสิ่งที่ไม่สนใจพวกเขา หากคอมพิวเตอร์มีการเข้าถึงอินเทอร์เน็ตก็จะพิมพ์ html (จริง) ไม่กี่บรรทัดมิฉะนั้นจะพิมพ์ไม่มีอะไร (เท็จ)

บันทึกแล้ว 1 ไบต์โดยใช้to.(แทนที่จะเป็นรุ่นก่อนหน้าb.io) ขอบคุณ @Kevin Cruijssen


คุณไม่สามารถเปลี่ยนไปใช้ทุบตีและลบได้printหรือไม่
BlueRaja - Danny Pflughoeft

1
@ BlueRaja-DannyPflughoeft Yup ที่จะทำงาน (มีคำตอบในทุบตีแม้ว่า (พวกเขาใช้wgetแทนcurlแต่มันเป็นสิ่งเดียวกัน))
Dada

4

C #, 87 ไบต์

_=>{try{new System.Net.WebClient().OpenRead("http://g.gl");return 1;}catch{return 0;}};

หากข้อยกเว้นถูกพิจารณาว่าเป็นเท็จซึ่งฉันไม่คิดว่าเป็นเช่นนั้นนี่คือ 65 ไบต์:

_=>new System.Net.WebClient().OpenRead("http://g.gl").ReadByte();

ฉันลองใช้ลิงก์http://to.ตามที่ระบุโดย @KevinCruijssen แต่ดูเหมือนจะไม่ทำงาน


4

8th , 23 21 ไบต์

บันทึกสองไบต์ขอบคุณคำแนะนำของ Kevin Cruijssenและจากการค้นพบของฉัน:http: //ดูเหมือนว่าจะทำงานได้ดีเช่นกันhttp: // ไป (บันทึกอีกหนึ่งไบต์)

"http://to" net:get .

หากสามารถเข้าถึงไซต์http: // ได้ไซต์จะพิมพ์trueออกมา falseมิฉะนั้นจะพิมพ์ มันปล่อยให้ดึงข้อมูลในกอง


1
TOS หมายความว่าT op osตะปู ฉันคิดว่าคุณหมายความว่ามันแค่ทิ้งข้อมูลไว้ในสแต็ก
Roman Gräf

ถูกตัอง. ฉันปรับปรุงคำอธิบายของฉัน ขอบคุณ
Chaos Manor

@ ev3commander คุณลองกับhttp: // ถึงแล้วหรือยัง ? มันใช้งานได้ในกรณีของฉัน (ฉันเห็น Apache2 Ubuntu Default Page) ดูเหมือนว่าไม่จำเป็นต้องผนวก "." หรือ '/'
Chaos Manor

3

MATLAB, 32 22 ไบต์

urlread('http://g.gl')

คำอธิบาย:

หากการเชื่อมต่ออินเทอร์เน็ตสิ้นสุดลงสิ่งนี้จะส่งผลให้ans(ตัวแปรเริ่มต้น) เป็นสตริงที่มีรหัส html ทั้งหมดในข้อความล้วน (ซึ่งเป็นจริงใน MATLAB)

หากการเชื่อมต่ออินเทอร์เน็ตไม่ทำงานการดำเนินการนี้จะเขียนข้อความแสดงข้อผิดพลาดไปยัง STDERR และปล่อยพื้นที่ทำงานว่างเปล่า (ซึ่งเป็นเท็จใน MATLAB)

น่าเสียดายที่urlreadต้องใช้ที่อยู่ URL แบบเต็มดังนั้นจึงg.glไม่เพียงพอ 11 จาก 22 ไบต์เป็นเพียงที่อยู่ URL


ทางเลือกวิธีการ:

วิธีแก้ไขปัญหาที่จับข้อผิดพลาดและปล่อย 0 ( เป็นเท็จ ) ในพื้นที่ทำงานหากการเชื่อมต่อไม่ทำงาน:

0;try urlread('http://g.gl'),end

0;เริ่มต้นตัวแปรเริ่มต้นansถึง0ซึ่งอยู่falseใน MATLAB จากนั้นเราtryจะอ่าน URL สิ่งนี้จะทำให้เกิดข้อผิดพลาดหากการเชื่อมต่ออินเทอร์เน็ตไม่ทำงานหรืออาร์เรย์อักขระถ้าไม่ (ซึ่งอยู่trueใน MATLAB)

เราไม่จำเป็นต้องจับอะไรดังนั้นเราเพิ่งจะจบ ถ้าการเรียก urlread ที่ประสบความสำเร็จนั้นจะเป็นสายยาวที่มีเนื้อหาของเว็บไซต์มิฉะนั้นansans=0


3

Bash, 39 ไบต์

exec 4<>/dev/tcp/to./80&&echo 1||echo 0

1
! exec 4<>/dev/tcp/to./80;echo $?
Jasen

หรือถ้าคุณไม่ต้องการพิมพ์จริง / เท็จ แต่สามารถคืนได้exec 4<>/dev/tcp/to./80
Jasen

3

JavaScript ES6, 71 43 ไบต์

fetch``.then(a=>alert(1)).catch(a=>alert``)

แจ้งเตือน 1 ถ้าออนไลน์แจ้งเตือนสตริงที่ว่างเปล่าหากออฟไลน์ ขอบคุณ Patrick Roberts ที่ช่วยให้ฉันสามารถกำจัดบางไบต์

เวอร์ชั่นเก่า

_=>fetch('http://enable-cors.org').then(a=>alert(a)).catch(a=>alert(0))

แจ้งเตือน[object Reponse]หากออนไลน์แจ้งเตือน0หากออฟไลน์

ลบข้อมูลโค้ดมันไม่ทำงานเพราะโหลดจากโดเมนอื่นที่ไม่มี CORS แต่ทำงานในคอนโซลเบราว์เซอร์


อืมมม สิ่งนี้จะพิมพ์ "ถูกต้อง" เมื่อฉันเชื่อมต่อ แต่จะไม่พิมพ์อะไรเลยถ้าฉันตัดการเชื่อมต่อและเรียกใช้ในเบราว์เซอร์ของฉัน เบราว์เซอร์ / ระบบปฏิบัติการใดที่คุณทดสอบสิ่งนี้ ฉันใช้ chrome-win7
DJMcMayhem

@DJMcMayhem แคชของคุณเป็นอย่างไร?
Ismael Miguel

@DJMcMayhem ฉันทดสอบใน Chrome, Win10 ปิดใช้งานแคชจากแท็บเครือข่ายและตรวจสอบออฟไลน์เพื่อทดสอบออฟไลน์ / ออนไลน์
Zanchi

ซึ่งสามารถเป็นโปรแกรมเต็มรูปแบบใน 52 ไบต์:fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
Patrick Roberts

2

JavaScript ES6, 90 81 Bytes

f=a=>{i=new Image();i.src="//placehold.it/1x1";i.onload=b=>a(1);i.onerror=c=>a()}

JavaScript ES6, 22 21 ไบต์ (ไม่ถูกต้อง)

เบราว์เซอร์บางตัวไม่สนับสนุนอย่างเต็มที่หรือสร้างผลลัพธ์ที่คาดหวังเมื่อใช้ navigator.onLine

f=a=>navigator.onLine

2
คำตอบนี้หมายความว่าสิ่งนี้จะไม่ส่งคืนค่าเท็จเสมอเมื่อไม่ได้เชื่อมต่ออินเทอร์เน็ต
Blue

คุณสามารถบันทึก byte ได้โดยการเพิ่มพารามิเตอร์ลงในแลมบ์ดาเช่น:f=a=>
XavCo7

1
แม้ว่าคำตอบของคุณจะยังคงไม่ถูกต้อง แต่คุณสามารถกำจัดf=ได้
Mama Fun Roll

1
78 ไบต์: a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of f = `และใช้แล้วwith(){})
Ismael Miguel

2

สกาลา 54 ไบต์

x=>(Runtime.getRuntime exec "ping -c 1 ai."waitFor)<1

ค่อนข้างง่าย ดำเนินการคำสั่ง ping ไปที่http://ai./และส่งกลับค่าจริงถ้ามันออกด้วย 0 หรือเท็จอย่างอื่น


2

Brainfuck (ไม่แข่งขัน) 21 ไบต์

++++++[>++++++++<-]>.

Brainfuck ไม่สามารถเชื่อมต่อกับอินเทอร์เน็ต (เท่าที่ฉันทราบ) ดังนั้นเนื่องจากโปรแกรมไม่สามารถเชื่อมต่อได้คำตอบจึงเป็นเช่นนั้นเสมอ 0

ไม่ใช่การแข่งขันเนื่องจากดูเหมือนว่าจะตกอยู่ภายใต้ช่องโหว่มาตรฐานของการส่งออกที่กำหนดโค้ดแบบยากแม้ว่าโปรแกรมนี้ในทางเทคนิคจะถูกต้องสำหรับความท้าทาย


Brainfuck ไม่สามารถเชื่อมต่อได้ แต่คอมพิวเตอร์ที่ฉันใช้งานอยู่ยังสามารถเชื่อมต่อกับอินเทอร์เน็ตได้ (หรือไม่) วิธีแก้ปัญหาสมองที่เหมาะสมคือโปรแกรมที่ตอบสนอง "ฉันไม่รู้" เสมอ
Kos

2
@ คอส "ฉันไม่รู้" ไม่ใช่ความจริง / เท็จ
Restioson

ไม่ใช่ "ฉันไม่รู้" เป็น "ฉันไม่สามารถตอบได้"
Cody

อาจจะแค่พิมพ์ไบต์ '\ 0' เนื่องจากนี่คือ 0 คุณจะมีรหัสเพียง 1 ไบต์
12431234123412341234123

2

Powershell, 64 26 23 ไบต์

บันทึกแล้ว 38 ไบต์ขอบคุณ Shawn Esterman

บันทึก 3 ไบต์และสคริปต์ที่ซ่อมแซมแล้วขอบคุณนักต้มตุ๋น

Test-Connection -q g.gl

ทดสอบการเชื่อมต่อ - เงียบถึง
Shawn Esterman

PowerShell ไม่สามารถแก้ไขได้to.คุณต้องใช้g.glแทน นอกจากนี้คุณสามารถย่อให้Test-Connection -q g.glเป็น
ต้มตุ๋น

2

PHP, 23 PHP + Curl, 14

การใช้ตัวดำเนินการ backtick ของ PHP:

<?=`curl to.`;

คำตอบดั้งเดิม:

ฉันจะพยายามเริ่มต้น:

<?=file('http://x.gl');

สิ่งนี้จะส่งผลอะไรถ้า x.gl ไม่สามารถเข้าถึงได้และArrayถ้าเป็น

อีกรุ่นที่ฉันไม่แน่ใจว่าพวกเขาพอดี:

<?=getmxrr('x.gl',$a);  // 22 chars

4
Re "คือช่องโหว่" ฉันคิดว่าฉันทามติปกติคือมันนับเป็นภาษาถิ่น (ดังนั้นคำตอบคือPHP + Curl, 15 ไบต์ )

อาร์เรย์มีความจริงไหม? ฉันจะอนุญาตให้แข่งขันต่อไปเนื่องจากเป็นคำถามของฉัน เพิ่งหมดความสนใจ
Restioson

@Restioson PHP แปลงอาร์เรย์สตริง"Array"เมื่อคุณพยายามที่จะพิมพ์ ( <?=) ""และเท็จบูลจะถูกแปลงเป็น ดังนั้นค่าส่งคืนจริงไม่ใช่อาร์เรย์ แต่เป็นสตริงว่างเปล่าหรือสตริงว่าง
Christoph

@ Christoph ฉันไม่คิดว่า "Array" ถือเป็นความจริงหรือเท็จ
Restioson

@Restioson มันเป็นสตริงที่แปลงเป็นบูลีนโดยปริยาย สาขาif ("Array") echo 'thruthy';จะได้รับจึงเป็นtruthy สตริงที่ว่างเปล่าจะไม่นำสาขาและจึงเป็นเท็จ
Christoph

2

Python 3 + ร้องขอ59 55 53 ไบต์

จะต้องมีคำตอบคำขอใช่มั้ย

from requests import*
try:get("http://to.")
except:Z

สถานะการออกคือ 0 สำหรับอินเทอร์เน็ตและ 1 สำหรับไม่มีอินเทอร์เน็ต ตัวอย่าง:

$ python inet.py 
$ echo $?
0
$ # Remove ethernet cable
$ python inet.py 
$ echo $?
1

การเปลี่ยนแปลง:

  • -4 ไบต์ (ขอบคุณ Mego)

คุณสามารถลดระยะนี้โดยใช้โปรโตคอลที่แตกต่างกัน ( ftpบางที) except:0/0และทำ
Mego

@ ฉันคิดว่าการร้องขอนั้นทำได้แค่ http (s) เท่านั้น ฉันได้เพิ่ม 0/0
matsjoyce



1

Mathematica 10 Bytes

สมมติว่าคุณมีสำเนา Mathematica ที่ถูกต้องและข้อมูลรับรองการเข้าสู่ระบบใน user.wolfram.com

CloudPut@1

จะเขียนค่า 1 ไปยังคลาวด์ ความจริง: CloudObject [""] Falsey: $ ล้มเหลว

CloudGet@%

จะส่งคืนค่า 1 ที่อัปโหลดไปยังคลาวด์


1
โปรดทราบว่าโดยค่าเริ่มต้นจะไม่อนุญาตให้ใช้ตัวอย่างข้อมูล REPL ใส่&หลังจากนั้นเพื่อทำให้เป็นฟังก์ชันที่ไม่มีชื่อ
LegionMammal978

คุณสามารถชี้ให้ฉันไปที่ลิงก์ได้หรือไม่?
Kelly Lowder


1
ในความคิดของฉันนี่คือคำตอบที่ดีที่สุดที่นี่ แต่วัตถุคลาวด์นับเป็นความจริงหรือไม่? ฉันจะบอกว่า 1 ในคลาวด์นั้นเป็นเรื่องจริง คำตอบที่ดี!
Restioson

@ LegionMammal978 ฉันสามารถใส่รหัสตามที่เป็นอยู่ในไฟล์แพ็คเกจ. wl และเรียกใช้เป็น "โปรแกรม" ตามที่อนุญาตตามคำถามเดิม โดยทั่วไปคำถามประเภทนี้จะเรียกใช้ฟังก์ชันที่มีอินพุต ไม่จำเป็นต้องป้อนข้อมูลผู้ใช้ นอกจากนี้การทดสอบความจริง / เท็จของฉันเป็นฟังก์ชั่นก็ใช้ได้เช่นกันโดยมีหรือไม่มีเครื่องหมาย & ในCloudPut@1&===$Failed& ทำให้ไม่มีความแตกต่างอย่างแน่นอน สุดท้ายโปรแกรมทั้งส่งคืนและพิมพ์ผลลัพธ์ดังนั้นในความเป็นจริงมันไม่ได้เป็นตัวอย่างข้อมูล REPL ตามที่คุณแนะนำ
Kelly Lowder

1

Python 2.7, 70 77ไบต์

from urllib import*
a=1
try:urlopen('http://to.')
except:a=0
print a

import urllib as l
try: 
 l.urlopen('http://a.uk')
 print 1
except:
 print 0

ใช้ 1 สำหรับความจริง, 0 สำหรับความเท็จ a.uk เปลี่ยนเส้นทางไปยัง บริษัท เสื้อผ้ามอเตอร์ไซค์ บันทึก 3 ไบต์โดยกำหนดให้กับตัวแปรและการพิมพ์นั้น และอีกอันหนึ่งสำหรับ "ถึง" เคล็ดลับ (ยืนยันว่าจะทำงานกับ urllib) สองอย่างสำหรับกำจัดเยื้องที่น่ารำคาญ


ฉันคิดว่าfrom urllib import*สามารถประหยัดถ่าน (และลดลงl.แน่นอน)
Nick T

@NickT ฉันลืมคุณสามารถวางช่องว่างระหว่างimportและ*ดังนั้นฉันคิดว่าคุณพูดถูก แต่ฉันอยู่ในมือถือและฉันจะแก้ไขในภายหลัง
Chris H

1

Julia + Bash (พร้อม dnsutils) ขนาด 10 ไบต์

run(`dig`)

`command`ใน Julia สร้างวัตถุที่สามารถทำงานกับcmdrun


0

Clojure, 49 ไบต์

#(try(slurp"http://to.")1(catch Exception _ nil))

ส่งคืน1หากสามารถเชื่อมต่อและเป็นnilอย่างอื่น

แค่พยายามไปslurpที่หน้า; โยนNoRouteToHostExceptionข้อยกเว้นเกี่ยวกับความล้มเหลวซึ่งถูกจับได้

น่าเสียดายที่โพรโทคอลและดอทดูเหมือนจะเป็นข้อบังคับ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.