2017-10-23 10 views
0

私はチャットに取り組んでおり、(ソケットモジュールで)それを終えました。 これは私のコードです:python socketなぜ私はすべてのポートを使用できませんか?

クライアント

import socket 
print("Make sure to answer everything correctly or else it won't work\n") 
my_ip = input('Your ip: ') 
my_port = int(input('A random port number: ')) 
server_ip = input('Server ip: ') 
server_port = int(input('Server port: ')) 
server = (server_ip, server_port) 

def main(): 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((my_ip, my_port)) 
    count = 0 
    name = input('Name: ') 
    while True: 
     if count == 0: 
      msg = input('--> ') 
      if msg.lower() == 'q': 
       break 
      end_msg = name + ': ' + msg 
      s.sendto(end_msg.encode('utf-8'), server) 
      count += 1 
     elif count == 1: 
      data, addr = s.recvfrom(1024) 
      print(data.decode('utf-8')) 
      msg = input('--> ') 
      if msg.lower() == 'q': 
       break 
      end_msg = name + ': ' + msg 
      s.sendto(end_msg.encode('utf-8'), server) 
     else: 
      pass 
    s.close() 
main() 

サーバー

import socket 
host = input('Host/ip: ') 
port = int(input('Port number: ')) 
users = [] 
def main(): 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((host, port)) 
    print('[!] Server started\n') 
    while True: 
     try: 
      data, addr = s.recvfrom(1024) 
      if addr not in users: 
       users.append(addr) 
      print('[*] Message from {} | {}'.format(addr, data.decode('utf-8'))) 
      for user in users: 
       s.sendto(data, user) 
     except: 
      pass 
    s.close() 
main() 

あなたは、私がクライアントコードで入力を持っていると私は別のポートを使用しようとしましたが、見ての通り、私はポートを使用する場合3かそれ以上の理由で私は「パースミッションが拒否されました」というエラーが出ます。それは大したことではありませんが、なぜこれが起こったのか興味があります、誰かが私にそれを説明することができますか?多くのシステムでは感謝

+0

を参照してください同様の質問への[この](https://stackoverflow.com/a/20826189/238704)の答えよりも低いポートにバインドすることができます。 –

+0

'root 'のみが1024未満のポートを使用できます –

答えて

0

は唯一のルートは1024

関連する問題