2017-02-19 9 views
1
from __future__ import print_function 
import socket 
import sys 

def socket_create(): 

    try: 

     global host 
     global port 
     global s 
     host = '' 
     port = 9999 
     s = socket.socket() 
    except socket.error as msg: 
     print("Socket creation error: " + str(msg)) 



def socket_bind(): 

    try: 
     global host 
     global port 
     global s 
     print("Binding socket to port: " + str(port)) 
     s.bind((host,port)) 
     s.listen(5) 
    except socket.error as msg: 
     print("Socket binding error: " + str(msg) + "\n" + "Retrying...") 
     socket_bind() 


def socket_accept(): 

    conn, address = s.accept() 
    print("Connection has been established | " + "IP " + address[0] + "| Port " + str(address[1])) 
    send_commands(conn) 
    conn.close() 


def send_commands(conn): 

    while True: 
     cmd = input() 
     if cmd == 'quit': 
      conn.close() 
      s.close() 
      sys.exit() 
     if len(str.encode(cmd)) > 0: 
      conn.send(str.encode(cmd)) 
      client_response = str(conn.recv(1024), "utf-8") 
      print(client_response, end ="") 

def main(): 

    socket_create() 
    socket_bind() 
    socket_accept() 

main() 
+0

私も持っています必要な場合はclient.pyファイルをお知らせください。 –

+0

投稿する必要がありますeフルエラー!合理的に小さい限り、クライアントの投稿は何の害もありません。 –

+0

あなたは使用しているPythonのバージョンを気にする必要があります。 2/3の互換性があるものを目指していますか?特にエンコーディング/デコードに関するストリングの取り扱いは特に異なっており、両方のバージョンで動作するものを得ることがいくつかの余分な作業を必要とするかもしれません。 –

答えて

0

使用raw_inputないinput参照https://docs.python.org/2/library/functions.html)。値を見て、inputによってあなたに返されているものの種類を持っている。

またstr)あなたのifで、ダウンだけで一つの引数(数行を取る。

+0

ありがとうございました、私はさらにエラーが発生した場合にお知らせします。 –

+0

このエラーが発生する "TypeError:str()は最大で1つの引数(2が指定されています)をとります。上記のstrは1つの引数しか取ることができませんが、これを解決する方法を教えてください? –

+0

[str](https://docs.python.org/2/library/functions.html#str)および[strクラスメソッド](https://docs.python.org/2/library/stdtypes)のドキュメントをお読みください。 .html#string-methods) – Cans

関連する問題