'''
此指令碼建立乙個tcp伺服器,
他接受來自客戶端的訊息,
然後將訊息加上時間戳字首併發送回客戶端
'''#!/usr/bin/env python
from socket import *
from time import ctime
host = '' #對bind()方法的標識
port = 21567 #埠號
bufsiz = 1024
addr = (host , port)
#套接字
#socket_family : 套接字家族
#第一種套接字是 unix ,其家族名字為 af_unix ,是基於檔案的套接字
#af_inet 支援 ipv4 ; af_inet6 支援 ipv6
#tcp : 傳輸控制協議
#建立tcp套接字,必須使用 sock_stream 作為 套接字型別(socket_type)
#建立套接字的語法:socket(socket_family , socket_type , proyocol=0)
tcpsersock = socket(af_inet, sock_stream) #建立伺服器套接字
tcpsersock.bind(addr) #套接字與位址繫結
tcpsersock.listen(5) #監聽連線
while true: #伺服器無限迴圈
print('waiting for connection ...')
tcpclisock, addr = tcpsersock.accept() #接受客戶端連線
#addr = tcpclisock
print('...connected from:', addr)
while true: #進入對話迴圈中等待客戶端傳送訊息
data = tcpclisock.recv(bufsiz) #接受對話
# 如果訊息是空白的,則意味著客戶端已退出,此時跳出對話迴圈,並關閉客戶端連線
if not data:
break
tcpclisock.send(('[%s] %s' % (ctime(), data.decode())).encode()) #傳送對話
tcpclisock.close() #關閉客戶端套接字
tcpsersock.close() #關閉伺服器套接字
'''
此指令碼建立乙個客戶端,
它提示使用者輸入傳送到伺服器端的訊息,
並接收從伺服器端返回的新增了時間戳字首的訊息,
然後將結果返回給使用者
'''#!/usr/bin/env python
from socket import *
host = 'localhost' #主機名
port = 21567 #埠號
bufsiz = 1024
addr = (host, port)
tcpclisock = socket(af_inet, sock_stream) #建立客戶端套接字
tcpclisock.connect(addr) #嘗試連線伺服器
while true: #通訊迴圈
data = input('> ')
if not data: #使用者沒有輸入,跳出迴圈
break
tcpclisock.send(data.encode()) # 傳送對話
data = tcpclisock.recv(bufsiz) #接受對話
if not data: #伺服器終止且對recv()呼叫失敗,跳出迴圈
break
print(data.decode('utf-8'))
tcpclisock.close() #關閉客戶端套接字
關於傳送對話的 send() 函式 ,裡面的引數應該是位元組型(bytes);
輸入函式input()返回值為字元型(str);
print()函式的引數是字元型(str);
python3中 位元組型(bytes) 和 字元型(str) 的轉換關係為:
對照可以理解**中位元組型和字元型之間的轉換。
python2 和 python3 關於位元組型和字元型之間的轉換處理不太一樣
(開始的時候特迷,一直報錯,好久才總算明白過來)
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...