import socket import threading host='' port=6889 def cilenThred(conn,addr): print("成功接受客戶端{}的連接:{}".format(addr[0],str(addr[1]))) #服務器向客戶端發送信息說明已經連接成功 msg='你已經成功連接到服務器' conn.sendall(bytes(msg,encoding="utf-8")) while True: data=conn.recv(1024) print("服務器接受到的數據為{}".format(str(data,encoding="utf-8"))) message='server>>{}'.format(str(data,encoding="utf-8")) conn.sendall(bytes(message,encoding="utf-8")) chioce = str(conn.recv(1024),encoding="utf-8") if chioce=="exit": conn.close() break else: pass try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #綁定ip地址和端口號 s.bind((host,port)) print('成功綁定了ip地址,端口號為{}'.format(port)) #服務器創建監聽 s.listen(10) print("創建監聽模式") while True: #成功接收客戶端的連接,兵返回連接對象和地址 conn,addr=s.accept() t=threading.Thread(target=cilenThred,args=(conn,addr)) t.start() except socket.error as msg: print("socket出現錯誤,錯誤為{}".format(msg)) finally: s.close()
客戶端:
import socket import sys host="localhost" port=6889 try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print('成功創建socket對象') s.connect((host,port)) print("成功連接到服務器端") reply=str(s.recv(1024),encoding="utf-8") print("成功接受到服務器返回的內容:{}".format(reply)) while True: message=input("請輸入要發送到服務器的信息》》") s.sendall(bytes(message,encoding="utf-8")) print("向服務器發送請求成功") reply1=str(s.recv(1024),encoding="utf-8") print("成功接受到服務器返回的內容{}".format(reply1)) chioce=input("是否繼續輸入?(y/n)") if chioce.lower()=="y": s.sendall(bytes("ok",encoding="utf-8")) pass else: s.sendall(bytes("exit",encoding="utf-8")) print("輸入結束") break except socket.error as msg: print("創建socket錯誤,錯誤為{0}".format(msg)) sys.exit(-1) finally: s.close()
