Kiểm tra xem máy tính có được kết nối với internet không


49

Viết một chương trình, theo kịch bản có truy cập internet hay không, tạo ra một đầu ra là "Truthy / Falsey" . Bạn có thể thử và kết nối với bất kỳ trang web hiện có nào, theo ý riêng của bạn (không sử dụng trang web mờ ám chỉ có 10% thời gian hoạt động - hãy cố gắng duy trì trên 80% thời gian hoạt động hàng năm). Nếu trang web bị sập, chương trình của bạn không phải hoạt động.

Nó phải là một chương trình độc lập hoặc một chức năng . Bạn có thể sử dụng các thư viện bên ngoài thư viện tiêu chuẩn để đạt được điều này. Sơ hở tiêu chuẩn bị cấm. Đây là mã golf, vì vậy mã có số byte ngắn nhất sẽ thắng.

Mã giả ví dụ:

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

Đây là bài viết đầu tiên của tôi về mã golf, vì vậy nếu điều này vi phạm bất kỳ quy tắc nào hoặc là một bản sao, xin vui lòng cảnh báo tôi.

EDIT: Do nhiều đề xuất, tôi đã loại bỏ hạn chế số lượng byte UTF-8


4
Thay vì truefalse, tôi khuyên bạn nên cho phép bất kỳ sự mặc định nào của chúng tôi cho sự trung thực và giả dối . Ngoài ra, bằng internet, bạn có nghĩa là mạng bên ngoài mạng cục bộ của bạn? Các chương trình vẫn phải hoạt động nếu nói google bị sập hoặc bất kỳ trang web lớn nào khác?
Màu xanh

3
Số lượng byte thường được thực hiện bằng mã hóa tự nhiên hoặc thuận tiện nhất của ngôn ngữ, không phải lúc nào cũng là UTF-8. Trừ khi bạn có lý do chính đáng để thực thi UTF-8, tôi nghĩ rằng mã hóa nên được để lại theo lựa chọn của lập trình viên
Luis Mendo

4
Tôi thấy hầu hết mọi người đang sử dụng g.gl/http://g.gl/ , nhưng to./http://to./ dường như ngắn hơn một byte (không phải tất cả các ngôn ngữ đều xem đó là một url hợp lệ thông qua).
Kevin Cruijssen

9
Cơ bản hàng hóa:PRINT "0"
Đánh dấu

3
Chính cái máy mà tôi đang gõ này, về mặt kỹ thuật là một phần của "Internet", vì nó có thể được truy cập từ bên ngoài (thông qua NAT và chuyển tiếp cổng). Vì vậy, nếu bạn nghĩ về nó, kịch bản "phát hiện internet" có thể được giảm xuống thành "đúng" :)
zeppelin

Câu trả lời:


29

Bash (với dnsutils ), 3 byte

Gửi yêu cầu DNS cho "." (Root DNS), mã thoát là 0 để thành công và> 0 nếu không.

Chơi gôn

dig

Kiểm tra

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

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

Khước từ

Điều này rõ ràng sẽ chỉ hoạt động nếu máy chủ DNS của bạn đang ngồi trong mạng của nhà cung cấp, tức là trong "Internet" (vì mạng nhà cung cấp của bạn thường là một phần của nó) hoặc nếu hệ thống của bạn đang sử dụng máy chủ DNS công cộng (như 8.8.8.8 từ Google, hệ thống dựa trên Android sử dụng), nếu không, bạn có thể nhận được một bản sao được lưu trong bộ nhớ cache từ máy chủ LAN cục bộ (hoặc localhost).

Nhưng tôi cho rằng điều này không trái với quy tắc , vì rõ ràng có nhiều hơn một hệ thống mà điều này hoạt động như dự định.

Các phương thức Pure-HTTP cũng có thể đưa ra các kết quả dương tính giả, do một proxy lưu trữ trung gian và không được bảo đảm để hoạt động ở mọi nơi, do đó không phải là một cái gì đó duy nhất cho phương thức này.

Một phiên bản đáng tin cậy hơn một chút, 8 byte

dig +tra

(một chút tưởng nhớ đến @ Dig ital Tra uma!)

Bật "chế độ theo dõi", điều này sẽ buộc đào tự thực hiện tìm kiếm đệ quy (xem https://serverfault.com/a/778830 ), tránh mọi vấn đề về bộ đệm.


Trích dẫn từ man dig: Trừ khi được yêu cầu truy vấn một máy chủ tên cụ thể, dig sẽ thử từng máy chủ được liệt kê trong /etc/resolv.conf . Nếu không tìm thấy địa chỉ máy chủ có thể sử dụng, đào sẽ gửi truy vấn đến máy chủ cục bộ .
Tít

@Titus, vâng đúng, hãy xem phần "từ chối" trong câu trả lời của tôi, nhưng miễn là máy chủ DNS của bạn (như được chỉ định trong độ phân giải của bạn) ở bên nhà cung cấp của bạn, nó hoạt động rất tốt.
zeppelin

Giải pháp của bạn phụ thuộc vào cài đặt không mặc định; Tôi woukld xem xét rằng khai thác một lỗ hổng. Bạn vẫn có thể giành chiến thắng với hai byte bổ sung.
Tít

1
> Giải pháp của bạn phụ thuộc vào Nope cài đặt không mặc định, đó chính xác là cách nó hoạt động trên máy của tôi (và điều đó đã đủ theo Meta). Hơn nữa, sử dụng máy chủ DNS của nhà cung cấp của bạn, thực sự là một thiết lập khá phổ biến (và thông thường nó cũng sẽ nằm trong độ phân giải của bạn).
zeppelin

2
quyết định xác định phụ thuộc vào cài đặt nào bạn đã sử dụng khi cài đặt nếu bạn định cấu hình mạng bằng DHCP sau đó có thể giải quyết các điểm tại bộ định tuyến của bạn. nếu bạn cấu hình mạng theo cách thủ công, nó sẽ có bất kỳ máy chủ DNS nào bạn chỉ định.
Jasen

19

Đồ dùng Bash + GNU, 8

  • 5 byte được lưu nhờ @Muzer.
wget to.

Các câu trả lời shell khác kiểm tra mã trả về và lặp lại một số trạng thái đầu ra tương ứng. Điều này là không cần thiết. Mã trả về shell đã là mã Truthy / Falsey có thể sử dụng và có thể truy cập được trong $?tham số này là thành ngữ cho bash. Trả về mã 0 có nghĩa là Đúng. Trả về mã> 0 có nghĩa là Sai.

Đang sử dụng:

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
Sử dụng một tên miền to.chứ không phải 8.8.8.8, để tiết kiệm khá nhiều.
Muzer

@Muzer có - cảm ơn
Chấn thương kỹ thuật số

2
@Muzer trừ khi có một cục bộ tomà trình phân giải được định cấu hình để tìm, nó vẫn sẽ đi đến bên phải (và có thể ping địa phương tolà đủ để kết nối với internet )
Christian Sievers

2
@Muzer OK, tođôi khi hoạt động và đôi khi không. Tôi đoán một số bộ nhớ đệm đang diễn ra. Tôi sẽ sử dụng to.chỉ để an toàn.
Chấn thương kỹ thuật số

4
Tại sao đó là một miền hợp lệ?
Kos

9

Mẻ, 8 byte

ping to.

pingsẽ được đặt ERRORLEVELthành 1nếu địa chỉ không thể được giải quyết hoặc đạt được.


7

05AB1E , 11 9 byte

Đã lưu 2 byte trên "đến." lịch sự của ev3commander

…to..wgX›

Kiểm tra xem độ dài của nội dung tại http: // đến . lớn hơn 1.
.wtrả về 0 khi lỗi.


1
Luôn là +1 cho các câu trả lời của
05AB1E

@WorseDoughnut Và tại sao vậy?
mbomb007

3
@ mbomb007 Chỉ là một fan hâm mộ lớn của ngôn ngữ kể từ khi Adnan bắt đầu làm việc với nó và đăng nó ở đây; nó chắc chắn là một ngôn ngữ hấp dẫn để đi sâu vào.
WorseDoughnut

1
@WorseDoughnut Đã có một siêu liên kết trong câu trả lời.
mbomb007

Bạn không thể kết nối với. để tiết kiệm một byte?
ev3commander

5

MATL , 15 14 byte

Một byte được lưu nhờ đề xuất của Kevin Cruijssen

'http://to.'Xi

Đầu ra là thông qua STDOUT. Điều này sẽ hiển thị một chuỗi không trống chứa các ký tự khác không (là sự thật) nếu có kết nối Internet; và hiển thị không có gì (đó là giả) nếu không có kết nối.

Điều này không thể được kiểm tra trực tuyến vì Xikhông được phép trong các thông dịch viên trực tuyến.

Giải trình

'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

Bạn có thể coi đó urlread('http://g.gl')là một câu trả lời OK không? Nó sẽ báo lỗi và để trống không gian làm việc nếu kết nối không hoạt động. Nó sẽ hiển thị một thông báo lỗi, nhưng về mặt kỹ thuật đó là STDERR ...? Tôi nghĩ rằng nó là một chút kéo dài, vì vậy tôi đã làm theo cách này . Nhưng bỏ qua trydường như cho kết quả giống như mã của bạn, hay? Bạn để trống ngăn xếp quá phải không? Nhân tiện, câu trả lời hay ... :)
Stewie Griffin

@StewieGriffin Cảm ơn! Có, tôi nghĩ urlread('http://g.gl')là hợp lệ (và giống như mã của tôi), vì STDERR bị bỏ qua theo mặc định và STDOUT trống bị giả mạo trong MATLAB
Luis Mendo

1
điều này sẽ làm việc với ftpthay vì http- lưu một byte khác?
Floris

1
@Floris Rất vui được gặp bạn ở đây! Thật ftpkhông may , dường như không hoạt động cho trang web đó
Luis Mendo

1
Xin chào @LuisMendo vâng, đôi khi tôi rình mò các trang web khác ... thật tệ là ftp không hoạt động!
Floris

5

Bash 66 62 21 byte

ping -c1 g.gl echo $?

Cảm ơn @Alex L. về mẹo rút ngắn URL.

Phiên bản bị đánh cắp:

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

Đây là câu trả lời đầu tiên của tôi ở Bash, tôi không chắc mình đã rút ngắn kịch bản đủ chưa.


Tôi nghĩ rằng bạn có thể sử dụng một URL ngắn hơn google.com, điều này sẽ cho phép bạn rút ngắn mã. Một cái gì đó như g.gl.
HyperNeutrino

3
Bạn cũng có thể chỉ echo $?thay vì toàn bộ câu lệnh if.
SomethingDark

4
bạn đã bỏ lỡ "một số" ;trong dòng golf.
Ipor Sircer

@IporSircer Cảm ơn. :) @S SomethingDark Xin chào, echo $? in 0thành công nếu không, nếu không nó sẽ trả về a 2trong trường hợp này. Tôi đã không xem xét mã nguồn của việc thực hiện pingnhưng tôi giả sử, có các mã trả lại khác nhau tùy thuộc vào quy định. Do đó, tôi đã sử dụng if elsechiến lược.
Abel Tom

@AbelTom - có thể lập luận rằng 0 là sự thật và không 0 là falsey.
SomethingDark

5

R, 20 byte

curl::has_internet()

Có một chức năng cho chính xác nhiệm vụ này trong curlgói.


1
+1 tìm thấy tốt đẹp. Đối với những người tò mò như tôi, chức năng này được triển khai như sau:function() !is.null(nslookup("r-project.org", error = FALSE))
plannapus

Số lượng tương đương: httr::url_ok('g.gl')(mặc dù không dùng nữa).
Jonathan Carroll

5

Java, 72 byte

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

3
Bạn cần chỉ định tên đủ điều kiệnjava.net.InetSocketAddress

4

Perl, 15 byte

print`curl to.`

Chạy với:

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

curlđầu ra thứ STDERR, đừng bận tâm đến chúng. Nếu máy tính có quyền truy cập internet, nó sẽ in một vài dòng html (sự thật), nếu không, nó sẽ không in gì cả (giả mạo).

Đã lưu 1 byte bằng cách sử dụng to.(thay vì trước đây của tôi b.io) nhờ @Kevin Cruijssen.


Bạn không thể chuyển sang bash và loại bỏ print?
BlueRaja - Daniel Pflughoeft

1
@ BlueRaja-DannyPflughoeft Yup, điều đó sẽ hoạt động (mặc dù đã có câu trả lời trong bash (họ sử dụng wgetthay vì curlnhưng đó là điều tương tự)).
Dada

4

C #, 87 byte

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

Nếu một ngoại lệ được coi là falsey, mà tôi không nghĩ là vậy, thì đây là 65 byte:

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

Tôi cũng đã thử sử dụng liên kết http://to.như được nêu bởi @KevinCruijssen nhưng dường như nó không hoạt động.


4

8 , 23 21 byte

Hai byte được lưu nhờ vào đề xuất của Kevin Cruijssen và cho khám phá của tôi:http: // để có vẻ hoạt động tốt nhưhttp: // đến . (lưu một byte khác)

"http://to" net:get .

Nếu trang web http: // để có thể đạt được, thì nó sẽ in true. Nếu không thì nó in false. Nó để lại dữ liệu lấy trên ngăn xếp.


1
TOS có nghĩa là t op o f s tack. Tôi nghĩ bạn có nghĩa là nó chỉ để lại dữ liệu trên ngăn xếp.
Roman Gräf

Đúng rồi. Tôi đã cải thiện lời giải thích của mình. Cảm ơn.
Chaos Manor

@ ev3commander Bạn đã thử với http: // to ? Nó hoạt động trong trường hợp của tôi (Tôi thấy Trang mặc định Ubuntu2 của Apache). Có vẻ như không cần phải nối thêm '.' hoặc '/'
Chaos Manor

3

MATLAB, 32 22 byte

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

Giải trình:

Nếu kết nối internet không hoạt động, điều này sẽ dẫn đến ans(biến mặc định) là một chuỗi có toàn bộ mã html ở dạng văn bản thuần (điều này đúng trong MATLAB).

Nếu kết nối internet bị hỏng, điều này sẽ ghi thông báo lỗi vào STDERR và để trống không gian làm việc ( sai trong MATLAB).

Thật không may, urlreadyêu cầu một địa chỉ url đầy đủ , vì vậy g.glkhông đủ. Do đó, 11 trong số 22 byte chỉ là địa chỉ url.


Cách tiếp cận khác:

Một giải pháp bắt lỗi và để lại 0 (cũng sai ) trong không gian làm việc nếu kết nối không hoạt động:

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

0;khởi tạo biến mặc định ansthành 0, falsetrong MATLAB. Sau đó chúng ta tryđọc url. Điều này sẽ báo lỗi nếu kết nối internet bị hỏng hoặc một mảng ký tự nếu không (nằm truetrong MATLAB).

Chúng tôi không cần phải bắt bất cứ điều gì, vì vậy chúng tôi chỉ cần kết thúc. Nếu cuộc gọi urlread thành công, thì anssẽ là một chuỗi dài với nội dung của trang web, nếu không ans=0.


3

Bash, 39 byte

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

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

hoặc nếu bạn không cần in đúng / sai nhưng chỉ có thể trả lại,exec 4<>/dev/tcp/to./80
Jasen

3

JavaScript ES6, 71 43 byte

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

Cảnh báo 1 nếu trực tuyến, cảnh báo một chuỗi trống nếu ngoại tuyến. Cảm ơn Patrick Roberts đã giúp tôi cạo sạch một số byte

Phiên bản cũ

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

Cảnh báo [object Reponse]nếu trực tuyến, thông báo 0nếu ngoại tuyến

Đã xóa đoạn mã, nó không hoạt động vì nó tải từ một miền khác không có CORS, nhưng nó hoạt động trong bảng điều khiển trình duyệt


Hừm. Điều này in chính xác "đúng" khi tôi được kết nối, nhưng nó không in bất cứ điều gì nếu tôi ngắt kết nối và chạy nó trong trình duyệt của tôi. Trình duyệt / HĐH nào bạn đã thử nghiệm điều này? Tôi đang sử dụng chrome-win7
DJMcMayhem

@DJMcMayhem Bộ nhớ cache của bạn thế nào?
Ismael Miguel

@DJMcMayhem Tôi đã thử nghiệm trong Chrome, Win10. Bộ nhớ cache bị vô hiệu hóa từ tab mạng và được kiểm tra Ngoại tuyến để kiểm tra ngoại tuyến / trực tuyến
Zanchi

Đây có thể là một chương trình đầy đủ trong 52 byte:fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
Patrick Roberts

2

JavaScript ES6, 90 81 byte

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

JavaScript ES6, 22 21 byte (Không hợp lệ)

Một số trình duyệt không hỗ trợ đầy đủ hoặc tạo ra kết quả mong đợi khi sử dụng navigator.onLine.

f=a=>navigator.onLine

2
Câu trả lời này ngụ ý rằng điều này sẽ không luôn trả về sai khi không được kết nối với internet
Blue

Bạn có thể lưu một byte bằng cách thêm một tham số vào lambda, như vậy:f=a=>
XavCo7

1
Mặc dù câu trả lời của bạn dường như vẫn không hợp lệ, bạn có thể thoát khỏi f=.
Mama Fun Roll

1
78 byte: a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of f = `và được sử dụng with(){})
Ismael Miguel

2

Scala, 54 byte

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

Khá đơn giản; thực thi lệnh ping đến http://ai./và trả về true nếu nó thoát bằng 0 hoặc sai.


2

Brainfuck (không cạnh tranh) 21 byte

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

Brainfuck không thể kết nối với internet (theo như tôi biết), vì vậy chương trình không thể kết nối, nên câu trả lời luôn là 0

Không cạnh tranh vì dường như rơi vào lỗ hổng tiêu chuẩn đầu ra được mã hóa cứng , mặc dù chương trình này về mặt kỹ thuật là chính xác cho thách thức.


Brainfuck không thể kết nối, nhưng máy tính tôi đang chạy này vẫn có thể được kết nối với internet (hoặc không). Một giải pháp cân não phù hợp là một chương trình luôn trả lời "Tôi không biết"
Kos

2
@Kos "Tôi không biết" không phải là sự thật / falsey
Restioson

Đó không phải là "Tôi không biết", đó là "Tôi không thể trả lời là không"
Cody

có thể chỉ cần in byte '\ 0' vì đây cũng là 0. bạn sẽ có mã chỉ 1 byte
12431234123412341234123

2

Powershell, 64 26 23 byte

Đã lưu 38 byte, nhờ Shawn Esterman

Đã lưu 3 byte và tập lệnh được sửa chữa, nhờ briantist

Test-Connection -q g.gl

Kiểm tra kết nối -Quiet đến.
Shawn Esterman

PowerShell không thể giải quyết to., g.glthay vào đó bạn phải sử dụng . Ngoài ra, bạn có thể rút ngắn nó xuống Test-Connection -q g.gl.
nghĩa tự do

2

PHP, 23 PHP + Curl, 14

Sử dụng toán tử backtick của PHP:

<?=`curl to.`;

Câu trả lời gốc:

Tôi sẽ cố gắng để bắt đầu:

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

Điều này không tạo ra kết quả nếu x.gl không thể đạt được và Arraynếu có.

Một phiên bản khác mà tôi không chắc chắn nếu chúng phù hợp:

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

4
Re "là một lỗ hổng", tôi nghĩ rằng sự đồng thuận thông thường là nó được tính là một phương ngữ ngôn ngữ (vì vậy câu trả lời là PHP + Curl, 15 byte ).

Liệu một mảng được tính là sự thật? Dù sao tôi cũng sẽ cho phép nó cạnh tranh, vì đó là câu hỏi của tôi. Chỉ cần quan tâm.
Restioson

@Restioson php chuyển đổi một mảng thành chuỗi "Array"khi bạn cố in nó ( <?=) và boolean false sẽ được chuyển đổi thành "". Vì vậy, giá trị trả về thực tế không phải là một mảng mà là một chuỗi không trống hoặc một chuỗi trống.
Christoph

@Cristoph Tôi không nghĩ "Mảng" được tính là trung thực hay chim ưng
Restioson

@Restioson Đó là một chuỗi hoàn toàn chuyển đổi thành boolean true. Một nhánh if ("Array") echo 'thruthy';sẽ được thực hiện do đó nó là sự thật . Chuỗi rỗng sẽ không lấy nhánh và do đó là falsey.
Christoph

2

Yêu cầu Python 3 +, 59 55 53 byte

Phải có một câu trả lời yêu cầu, phải không?

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

Trạng thái thoát là 0 đối với internet, 1 không có internet. Thí dụ:

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

Thay đổi:

  • -4 byte (cảm ơn Mego)

Bạn có thể rút ngắn điều này bằng cách sử dụng một giao thức khác ( ftpcó lẽ) và thực hiện except:0/0.
Mego

@Mego Tôi nghĩ rằng yêu cầu chỉ làm http (s). Tôi đã thêm 0/0.
matjoyce

1

Thuốc tiên, 33 byte

{:ok,_}=:inet.getaddr('to',:inet)

0 nếu được kết nối, 1 nếu không.



1

Toán học 10 byte

Giả sử bạn có một bản sao hợp lệ của Mathematica và thông tin đăng nhập trên user.wolfram.com

CloudPut@1

sẽ ghi giá trị 1 lên đám mây. Sự thật: CloudObject [""] Falsey: $ Không thành công

CloudGet@%

Sẽ trả về giá trị 1 đã được tải lên đám mây.


1
Lưu ý rằng, theo mặc định, các đoạn REPL không được phép. Đặt &sau đó để làm cho nó thành một chức năng không tên.
LegionMammal978

Bạn có thể chỉ cho tôi một liên kết?
Kelly Lowder


1
Theo tôi, đây là câu trả lời tốt nhất ở đây. Nhưng đối tượng Cloud có được tính là sự thật không? Tôi sẽ nói rằng 1 trong đám mây là sự thật, mặc dù. Câu trả lời tốt đẹp!
Restioson

@ LegionMammal978, tôi có thể đặt mã, như là, trong tệp gói .wl và chạy nó dưới dạng "chương trình" cho phép theo câu hỏi ban đầu. Thông thường các loại câu hỏi này gọi cho một chức năng với đầu vào; không có đầu vào người dùng là cần thiết. Hơn nữa, việc kiểm tra tính trung thực / sai của tôi như là một chức năng cũng hoạt động tốt với hoặc không có &. Trong CloudPut@1&===$Failed& làm cho hoàn toàn không có sự khác biệt. Cuối cùng, chương trình vừa trả về và in kết quả đầu ra, vì vậy trên thực tế nó không phải là một đoạn REPL như bạn đề xuất.
Kelly Lowder

1

Python 2.7, 70 77 byte

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

Sử dụng 1 cho sự thật, 0 cho giả. a.uk chuyển hướng đến một công ty quần áo xe máy. Đã lưu 3 byte bằng cách gán cho một biến và in nó. Và một số khác cho "đến." lừa (xác nhận để làm việc với urllib), hai để thoát khỏi các vết lõm pesky.


Tôi nghĩ rằng from urllib import*có thể tiết kiệm một char (và l.tất nhiên thả ).
Nick T

@NickT Tôi quên bạn có thể bỏ khoảng trống giữa import*vì vậy tôi nghĩ bạn đúng nhưng tôi đang sử dụng điện thoại di động và tôi sẽ sửa nó sau
Chris H

1

Julia + Bash (với dnsutils), 10 byte

run(`dig`)

`command`trong julia tạo ra một cmdđối tượng có thể được chạy với run.


0

Clojure, 49 byte

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

Trả về 1nếu nó có thể kết nối, và nilnếu không.

Chỉ cần cố gắng vào slurptrang; ném một NoRouteToHostExceptionngoại lệ vào thất bại, được bắt.

Thật không may, giao thức và dấu chấm dường như là bắt buộc.


0

Javascript (Nashorn), 61 byte

print(new java.net.InetSocketAddress("to.",80).getAddress())

Dựa trên câu trả lời Java của Huntro.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.