第5回

すべて開くすべて閉じる
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
-
|
!
 
 
 
 
 
 
 
 
-
!
-
!
-
!
-
!
 
 
-
!
 
 
 
 
 
 
-
!
 
 
 
 
 
 
 
 
 
 
 
-
!
 
#ex05_02.py
# -*- coding: utf-8 -*-
import socket
import threading
import sys
 
PORT = 9998
 
def start_client(host):
    print("start client socket, connect")
    try:
        #socket.socket ... socket を作成し、socに代入
        soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #IPアドレスがhostのserver socketにsocを接続
        soc.connect((host,PORT))
        #受信担当の関数handlerを物threadでうごかすhandle_threadを生成。
        handle_thread=threading.Thread(target=handler,args=(soc,))
        #handle_threadをstart
        handle_thread.start()
    except: #接続時にエラーがあった場合の処理
        print("connect error.")
    #受信のthreadが動いている間、並行して、入力があったら、それをサーバに送信する。
    while True:
        try:
            line=input()
            soc.send(bytes(line,"utf-8"))
        except KeyboardInterrupt:
            soc.close()
            exit()
#受信の処理。送信threadとは別に、並行して処理を行う。
def handler(soc):
    print("at client, connected, start handler")
    while True:
        try:
            data = soc.recv(1024)
            print("[receive]- {}".format(data.decode("utf-8")))
        except socket.error:
            soc.close()
            break
    exit()
 
if __name__ == "__main__":
    # python ex04_08.py <serverのIPアドレス> で起動。args[1]に、IPアドレス。
    args=sys.argv
    start_client(args[1])

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS