下面的程式實現的功能:客戶端發來訊息,伺服器端加上時間戳返回給使用者
伺服器端:
from socket import *
from time import ctime
import os
print(os.getpid())
host=''
post=21567
bufsiz=1024
addr=(host,post)#這裡是配置套接字,比c語言的簡單多了,沒那麼多結構體
tcpserversocket=socket(af_inet,sock_stream)#建立服務端的套接字
tcpserversocket.bind(addr)#將位址與套接字繫結
tcpserversocket.listen(5)#然後就是監聽
try:
while
true:
tcpclientsocket,clientaddr=tcpserversocket.accept()#返回結果
print('...connected from :',clientaddr)
while
true:
data=tcpclientsocket.recv(bufsiz).decode()
ifnot data:
break
tcpclientsocket.send(('[%s] %s' % (ctime(),data)).encode())
print(data)
else:
tcpclientsocket.close()
except exception as e:
print(e)
finally:
tcpserversocket.close()
客戶端:
__author__ = 'qingjin'
from socket import *
host='172.18
.255
.236'
post=21567
bufsize=1024
addr=(host,post)
tcpclientsocket=socket(af_inet,sock_stream)
tcpclientsocket.connect(addr)
while
true:
data=input('>')
ifdata.lower()=='q':
break
tcpclientsocket.send(data.encode())
data=tcpclientsocket.recv(bufsize).decode()
if not data:
break
print(data)
tcpclientsocket.close()
在這裡遇到了幾個問題,說明一下,對以後也有幫助:
1.socket.gaierror: [errno 11001] getaddrinfo failed
這個其實就是主機位址格式不對
2.typeerror: 『str』 does not support the buffer inte***ce
這個就是要加上encode(string轉化成byte)和decode(相反)的原因
解決方法**:python 3中套接字程式設計中遇到typeerror: 『str』 does not support the buffer inte***ce的解決辦法
3.我本來想通過建立執行緒來處理客戶端的請求,發現os.fork()不能用,這個是在unix下用的,windows下沒有。
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
153 python網路程式設計 TCP客戶端
tcp的客戶端要比伺服器端簡單很多,如果說伺服器端是需要自己買手機 查手機卡 設定鈴聲 等待別人打 流程的話,那麼客戶端就只需要找乙個 亭,拿起 撥打即可,流程要少很多。示例 coding utf 8 from socket import 建立socket tcpclientsocket socke...
python網路程式設計之TCP客戶端開發
1.匯入套接字模組 import socket if name main 2.建立套接字 af init ipv4 sock stream tcp tcp client socket socket.socket socket.af inet,socket.sock stream 3.建立連線 tcp...