1. 程式人生 > >python socket實現簡單的(TCP/UDP)伺服器/客戶端

python socket實現簡單的(TCP/UDP)伺服器/客戶端

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通訊例項