創建TCP服務器僞代碼:
s = socket() #創建服務器套接字
s.bind() #套接字與地址綁定
s.listen() #監聽連接
inf_loop: #服務器無限循環
cs = s.accept() #接受客戶端連接,如果沒有連接,則阻塞
comm_loop: #通信循環
cs.recv() / cs.send() #會話
cs.close() #關閉客戶端套接字
s.close() #關閉服務器套接字
以下是代碼:
#!/usr/bin/env python3 # encoding: utf-8 from socket import * from time import ctime HOST = '' PORT = 21567 BUFSIZE = 1024 ADDR = (HOST, PORT) tcpSerSock= socket(AF_INET, SOCK_STREAM) tcpSerSock.bind(ADDR) tcpSerSock.listen(5) while True: print('waiting for connection...') tcpCliSock, addr = tcpSerSock.accept() print('...connected from:', addr) while True: data = tcpSerSock.recv(BUFSIZE) if not data: break tcpSerSock.send('[%s] %s' % (bytes(ctime(), 'uft-8'), data)) tcpSerSock.close() tcpSerSock.close()
相應地創建TCP客戶端僞代碼:
cs = socket()
cs.connect()
comm_loop: #通信循環
cs.recv() / cs.send() #會話
cs.close() #關閉客戶端套接字
以下是實現代碼:
#!/usr/bin/env python
# encoding: utf-8
from socket import *
HOST = '192.168.184.130'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input('>')
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
print(data)
tcpCliSock.close()
在這個最簡單的服務器套接字程序基礎上,可以充分地擴充。