2017-07-05 24 views
-7

チャットプログラムのコードベースをSSL/TLSとマルチスレッドで書き留めます。誰かがpythonネットワークpragramで私を助けることができますか?

3つのことがあります。

1.クライアントがクライアントのIDとIPまたはネットワークインターフェイス情報、ネットワーク情報を接続しているとき。

2.クライアントがメッセージを送信する際には、毎回このフォーム([Client ID @ connect IP] Message)に従わなければなりません。

3.youは、クライアントとサーバーのプログラムとのフローチャートを示し、説明する必要があります。

それはネットワークプログラミングの私の最終試験です。それは私にとっては難しいことです。私はコードを書くことができませんでした。だから私は何もせずに論文を提出しなければならない。私はやり方がわからない。誰かがプログラムのコーディング方法を説明することができますか?

私のコードは

server.py

import socket 
import thread 

print '---python chatting program---' 

host = ''  
port = 27332 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.bind((host, port)) 

s.listen(1) 

users = [] 

def service(conn): 

    try: 

     name = conn.recv(1024) 

     str = '*' + name + ' is entered.*' 

     while conn: 

      print str 

      for each in users: 

       each.send(str) 

      str = name + ' : ' + conn.recv(1024) 

    except: 

     users.remove(conn) 

     str = '*' + name + ' is out.*' 

     print str 

     if users: 

      for each in users: each.send(str) 

# thread.start_new_thread(service,()) 

while 1: 

    conn, addr = s.accept() 

    global users 

    users.append(conn) 

    thread.start_new_thread(service, (conn,)) 

    pass 

client.py

import socket 
import thread 

def handle(socket): 

    while 1: 

     data = socket.recv(1024) 

     if not data: 

      continue 

     print data 

    print 'handler is end.' 


host = '127.0.0.1'  
port = 27332 

print 'enter your name.' 

name = raw_input() 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.connect((host, port)) 

s.send(name) 

thread.start_new_thread(handle, (s,)) 

while 1: 

    msg = raw_input() 

    if not msg: 

     continue 

    s.send(msg) 

s.close() 

print '---chatting program is end---' 

答えて

0

公式Pythonドキュメントは、シンプルを実装するために、Pythonのネイティブsocketパッケージを使用する方法の例を提供していますエコーサーバーとクライアント。このサンプル自体には本質的に実際の機能は含まれていません(ここでの目的はsocketの使用をデモするためです)。サーバーはクライアントから受け取ったものをすべてエコーバックします。ただし、このコードを基にして、必要に応じて機能を追加することができます。 Python 3を使用している場合は、Python 2 see hereのドキュメントhereがあります。 SSL/TLSの一部のための今すぐ

。 PythonにはソケットオブジェクトのTLS/SSLラッパーであるネイティブモジュールsslがあります。モジュール「は、トランスポートレイヤセキュリティ(しばしば「セキュアソケットレイヤ」と呼ばれる)暗号化とネットワークソケット用のピア認証機能」へのアクセスを提供します。 Python 3を使用している場合、sslモジュールhere、Python 2 see hereのドキュメントを見つけることができます。

sslモジュールは、ソケットソケットタイプから派生したクラスssl.SSLSocketを提供し、SSLを使用してソケット上を流れるデータを暗号化および復号化するソケット型ラッパーを提供します。公式文書には、演習を実装するためのサンプルコード(スニペット)も含まれています(sslモジュールを使用してSSL/TLSを行う方法についてはsee e.g. hereをPython 3で使用しています)。

関連する問題