Created
July 9, 2019 06:00
-
-
Save jiahut/ddcafa28c9fd0a3e5b9cffed2e8895f2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bufio" | |
"fmt" | |
"log" | |
"net" | |
"time" | |
) | |
func main() { | |
// fmt.Println("hello world") | |
timeout := time.Duration(2 * time.Second) | |
// _ , err := net.DialTimeout("tcp", "localhost:10800", timeout) | |
// if err != nil { | |
// log.Println("Sit unreachable, error", err) | |
// } else { | |
// log.Printf("ok") | |
// } | |
ports := []int{10800, 10801, 8123, 2200, 31500, 8888} | |
for _, port := range ports { | |
// log.Println(port) | |
remote := fmt.Sprintf("localhost:%d", port) | |
conn, err := net.DialTimeout("tcp", remote, timeout) | |
if err != nil { | |
raddr, err := net.ResolveUDPAddr("udp", remote) | |
udp_conn, err := net.DialUDP("udp", nil, raddr) | |
defer udp_conn.Close() | |
if err != nil { | |
log.Printf("udp open error: %v", err) | |
continue | |
} else { | |
p := make([]byte, 1) | |
udp_conn.Write([]byte("ping")) | |
_, err := bufio.NewReader(udp_conn).Read(p) | |
if err != nil { | |
log.Println("udp read error: ", err) | |
continue | |
} else { | |
log.Printf("%s udp ok", remote) | |
} | |
} | |
} else { | |
defer conn.Close() | |
log.Printf("%s tcp ok", remote) | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import socket | |
import errno | |
import os | |
HOST, PORT = "", 8888 | |
def serve_forever(): | |
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | |
listen_socket.bind((HOST, PORT)) | |
print("Serving on port %s ..." % PORT) | |
while True: | |
request, addr = listen_socket.recvfrom(2048) | |
response = b"error" | |
print(request) | |
if request == b"Ping": | |
response = b"Pong" | |
listen_socket.sendto(response, addr) | |
if __name__ == '__main__': | |
serve_forever() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import socket | |
import datetime | |
SERVER_ADDRESS = 'localhost', 8888 | |
REQUEST = b"Ping" | |
def main(): | |
i = 10 | |
while i > 0: | |
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
sock.settimeout(1) | |
try: | |
begin_time = datetime.datetime.now() | |
sock.sendto(REQUEST, (SERVER_ADDRESS)) | |
while True: | |
data, addr = sock.recvfrom(2048) | |
if data == "Pong": | |
end_time = datetime.datetime.now() | |
i = i - 1 | |
break | |
else: | |
print(data) | |
continue | |
except socket.timeout: | |
print("time out") | |
else: | |
msec = (end_time - begin_time).microseconds / 1000.0 | |
print("rtt: %f msec" % msec) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment