python模塊:socket

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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章