python socket實現簡單的(TCP/UDP)伺服器/客戶端
阿新 • • 發佈:2019-02-07
1、建立TCP服務端
# -*- coding: utf-8 -*- from socket import * from time import ctime HOST = 'localhost' #主機名 PORT = 9999 #埠號 BUFSIZE = 1024 #緩衝區大小1K ADDR = (HOST,PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) tcpSerSock.bind(ADDR) #繫結地址到套接字 tcpSerSock.listen(5) #監聽 最多同時5個連線進來 while True: #無限迴圈等待連線到來 try: print 'Waiting for connection ....' tcpCliSock, addr = tcpSerSock.accept() #被動接受客戶端連線 print u'Connected client from : ', addr while True: data = tcpCliSock.recv(BUFSIZE) #接受資料 if not data: break else: print 'Client: ',data tcpCliSock.send('[%s] %s' %(ctime(),data)) #時間戳 except Exception,e: print 'Error: ',e tcpSerSock.close() #關閉伺服器
2、建立TCP客戶端
# -*- coding: utf-8 -*- from socket import * HOST = 'localhost' #主機名 PORT = 9999 #埠號 與伺服器一致 BUFSIZE = 1024 #緩衝區大小1K ADDR = (HOST,PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) #連線伺服器 while True: #無限迴圈等待連線到來 try: data = raw_input('>') if not data: break tcpCliSock.send(data) #傳送資料 data = tcpCliSock.recv(BUFSIZE) #接受資料 if not data: break print 'Server: ', data except Exception,e: print 'Error: ',e tcpCliSock.close() #關閉客戶端
至此TCP的服務端和客戶端已建立完畢!!
3、建立UDP伺服器
# -*- coding: utf-8 -*- from socket import * from time import ctime HOST = '127.0.0.1' #主機名 PORT = 9999 #埠號 BUFSIZE = 1024 #緩衝區大小1K ADDR = (HOST,PORT) udpSerSock = socket(AF_INET, SOCK_DGRAM) udpSerSock.bind(ADDR) #繫結地址到套接字 while True: #無限迴圈等待連線到來 try: print 'Waiting for message ....' data, addr = udpSerSock.recvfrom(BUFSIZE) #接受UDP print 'Get client msg is: ', data udpSerSock.sendto('[%s] %s' %(ctime(),data), addr) #傳送UDP print 'Received from and returned to: ',addr except Exception,e: print 'Error: ',e udpSerSock.close() #關閉伺服器
4、建立UDP客戶端
# -*- coding: utf-8 -*-
from socket import *
HOST = '127.0.0.1' #主機名
PORT = 9999 #埠號 與伺服器一致
BUFSIZE = 1024 #緩衝區大小1K
ADDR = (HOST,PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True: #無限迴圈等待連線到來
try:
data = raw_input('>')
if not data:
break
udpCliSock.sendto(data, ADDR) #傳送資料
data,ADDR = udpCliSock.recvfrom(BUFSIZE) #接受資料
if not data:
break
print 'Server : ', data
except Exception,e:
print 'Error: ',e
udpCliSock.close() #關閉客戶端
推薦參考地址:網路程式設計之套接字Socket、TCP和UDP通訊例項