客戶端程式:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# version: python 3.6.3
# tools: pycharm 2017.3.3
__date__ = '2018/7/24 11:06'
__author__ = 'cdl'
import socket
import time
class chatclient:
def __init__(self, username, port):
self.username = username
self.socket = socket.socket(socket.af_inet, socket.sock_stream)
self.socket.connect(("127.0.0.1", port))
def send_msg(self, msg):
self.socket.send("::".format(username=self.username,msg=msg).encode("utf-8"))
def recv_msg(self):
data=self.socket.recv(1024)
if data:
print("\n【機械人小圖】"+" "+time.strftime('%y-%m-%d:%h:%m:%s',time.localtime(time.time())))
print(data.decode("utf-8"))
return true
return false
def main(self):
data = self.socket.recv(1024)
print(data.decode("utf-8"))
msg = input("請輸入訊息:")
self.send_msg(msg)
while true:
if self.recv_msg():
msg=input("\n我:")
self.send_msg(msg)
if msg == "exit":
print("聊天室已關閉")
break
if __name__ == '__main__':
cc = chatclient(username="curry", port=9999)
cc.main()
服務端程式:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# version: python 3.6.3
# tools: pycharm 2017.3.3
__date__ = '2018/7/24 11:22'
__author__ = 'cdl'
import socket
import time
import threading
import requests
import json
class chatserver:
def __init__(self, port):
# 繫結伺服器的ip和埠,注意以tuple的形式
self.socket = socket.socket(socket.af_inet, socket.sock_stream)
self.socket.bind(("0.0.0.0", port))
self.socket.listen(5)
# 圖靈機械人,授權碼
self.key = "************(自己申請乙個圖靈機械人的key)"
print("正在監聽 127.0.0.1 :{}...".format(port))
def tcplink(self, sock, addr):
# 每次連線,開始聊天前,先歡迎下。
sock.send("你好,歡迎來到機械人聊天器!".encode("utf-8"))
while true:
data = sock.recv(1024).decode("utf-8")
print(sock.getpeername())
print(sock.getsockname())
print(sock.fileno())
username = data.split("::")[0]
msg = data.split("::")[1]
if msg == "exit":
break
if msg:
print("【"+username+"】 "+time.strftime('%y-%m-%d:%h:%m:%s',time.localtime(time.time())))
print(msg)
response = self.get_response(msg)
sock.send(response.encode("utf-8"))
sock.close()
print("與 {} 結束聊天!".format(username))
def get_response(self, info):
# 呼叫圖靈機械人api
url = '' + self.key + '&info=' + info
res = requests.get(url)
res.encoding = 'utf-8'
jd = json.loads(res.text)
return jd['text']
def main(self):
while true:
sock, addr = self.socket.accept()
t=threading.thread(target=self.tcplink, args=(sock, addr))
t.start()
if __name__ == '__main__':
cs = chatserver(port=9999)
cs.main()
執行:# 將服務端程式跑起來,然後執行客戶端
Python3網路程式設計
python提供了2個級別的訪問翁羅服務 低階別的網路服務支援socket,他提供了標準的bsd sockets api,可以訪問底層作業系統socket介面的全部方法 高階別的網路服務模組socket server,他提供了伺服器中心類,可以簡化伺服器的開發 使用此函式建立套接字,語法 socke...
python3網路程式設計
網路程式設計 通過網路程式設計解決計算機與計算機間的通訊的通訊協議 網路根據地域面積分為三類 區域網,都會網路,廣域網 ip位址由4個8位組成,每位最大不大於255 b類 128.0.0.0 191.255.255.255 c類 192.0.0.0 233.255.255.255 d,e類 多用於組...
python3 網路程式設計
建立服務端 coding utf 8 import socket net socket socket.socket socket.af inet,socket.sock stream net socket.bind 7788 net socket.listen 10 new socket,clien...