ex05_02.py
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[第5回]]
* マルチクライアントチャット [#b3cbf6cc]
** クライアントプログラム [#a7996de4]
#code(Python){{
#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 ex05_02.py <serverのIPアドレス> で起動。args[1]に、IPアドレス。
args=sys.argv
start_client(args[1])
}}
----
#counter
終了行:
[[第5回]]
* マルチクライアントチャット [#b3cbf6cc]
** クライアントプログラム [#a7996de4]
#code(Python){{
#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 ex05_02.py <serverのIPアドレス> で起動。args[1]に、IPアドレス。
args=sys.argv
start_client(args[1])
}}
----
#counter
ページ名: