1 終端通信
一對一,單輪對話.
1.0 服務端
- server.py
#-*-coding:utf-8-*-
import socket
import threading
class SocketServer(object):
def server_test(self):
# streaming socket describe symbol
s = socket.socket()
# get host IP
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
# set port
port = 8090
# address tuple
addr = (host_ip, port)
print("Address: {}".format(addr))
# bind IP & Port
s.bind(addr)
# wait for client connection
s.listen(10)
client_socket, addr = s.accept()
print("Connected IP Address: {}".format(addr))
while True:
# accept client connection & creat new socket describe symbol
# client_socket, addr = s.accept()
# print("Connected IP Address: {}".format(addr))
recv_bytes = client_socket.recv(1024)
print("successful received")
recv_str = str(recv_bytes, encoding='utf-8')
if recv_str == 'q' or recv_str == "exit":
s.close()
break
print("boot> {}".format(recv_str))
send_msg = input("chatbot>")
if send_msg == "q" or send_msg == "exit":
s.close()
break
send_bytes = bytes(send_msg, encoding='utf-8')
client_socket.sendall(send_bytes)
print("successful sending")
# s.close()
if __name__ == "__main__":
server = SocketServer()
t_server = threading.Thread(server.server_test())
t_server.start()
1.2 客戶端
- client.py
import socket
import threading
class Chat(object):
def chat(self):
s = socket.socket()
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
port = 8090
addr = (host_ip, port)
s.connect(addr)
while True:
input_chat = input("boot>>")
if input_chat == 'q':
s.sendall(bytes(input_chat, encoding='utf-8'))
break
else:
s.sendall(bytes(input_chat, encoding='utf-8'))
rec_bytes = s.recv(1024)
rec_str = str(rec_bytes, encoding='utf-8')
if rec_str == "q" or rec_str == "exit" or len(rec_str) == 0:
s.close()
break
print("Response Infomation: {}".format(rec_str))
if __name__ == "__main__":
init_chat = Chat()
t_client = threading.Thread(target=init_chat.chat())
t_client.start()