Skip to content

Instantly share code, notes, and snippets.

@jiahut
Created July 9, 2019 06:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jiahut/ddcafa28c9fd0a3e5b9cffed2e8895f2 to your computer and use it in GitHub Desktop.
Save jiahut/ddcafa28c9fd0a3e5b9cffed2e8895f2 to your computer and use it in GitHub Desktop.
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)
}
}
}
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()
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