Home | History | Annotate | Download | only in bpf
      1 #!/usr/bin/env python3
      2 #
      3 # SPDX-License-Identifier: GPL-2.0
      4 #
      5 
      6 import sys, os, os.path, getopt
      7 import socket, time
      8 import subprocess
      9 import select
     10 
     11 def read(sock, n):
     12     buf = b''
     13     while len(buf) < n:
     14         rem = n - len(buf)
     15         try: s = sock.recv(rem)
     16         except (socket.error) as e: return b''
     17         buf += s
     18     return buf
     19 
     20 def send(sock, s):
     21     total = len(s)
     22     count = 0
     23     while count < total:
     24         try: n = sock.send(s)
     25         except (socket.error) as e: n = 0
     26         if n == 0:
     27             return count;
     28         count += n
     29     return count
     30 
     31 
     32 SERVER_PORT = 12877
     33 MAX_PORTS = 2
     34 
     35 serverPort = SERVER_PORT
     36 serverSocket = None
     37 
     38 HostName = socket.gethostname()
     39 
     40 # create passive socket
     41 serverSocket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
     42 host = socket.gethostname()
     43 
     44 try: serverSocket.bind((host, 0))
     45 except socket.error as msg:
     46     print('bind fails: ' + str(msg))
     47 
     48 sn = serverSocket.getsockname()
     49 serverPort = sn[1]
     50 
     51 cmdStr = ("./tcp_client.py %d &") % (serverPort)
     52 os.system(cmdStr)
     53 
     54 buf = b''
     55 n = 0
     56 while n < 500:
     57     buf += b'.'
     58     n += 1
     59 
     60 serverSocket.listen(MAX_PORTS)
     61 readList = [serverSocket]
     62 
     63 while True:
     64     readyRead, readyWrite, inError = \
     65         select.select(readList, [], [], 2)
     66 
     67     if len(readyRead) > 0:
     68         waitCount = 0
     69         for sock in readyRead:
     70             if sock == serverSocket:
     71                 (clientSocket, address) = serverSocket.accept()
     72                 address = str(address[0])
     73                 readList.append(clientSocket)
     74             else:
     75                 sock.settimeout(1);
     76                 s = read(sock, 1000)
     77                 n = send(sock, buf)
     78                 sock.close()
     79                 serverSocket.close()
     80                 sys.exit(0)
     81     else:
     82         print('Select timeout!')
     83         sys.exit(1)
     84