python3網路程式設計實戰

2021-08-21 17:39:14 字數 3054 閱讀 2321

客戶端程式:

#!/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...