本文實例講述了python實現簡單socket通信的方法。分享給大家供大家參考,具體如下:
剛剛開始接觸python,實現了一個helloworld程序---關于udp協議的socket通信demo。
首先服務端這邊的實現如下:
import socket, tracebackhost = '' # Bind to all interfaces port = 51500# Step1: 創建socket對象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# Step2: 設置socket選項(可選)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# Step3: 綁定到某一個端口s.bind((host, port))# Step4: 監聽該端口上的連接while 1: try: message, address = s.recvfrom(8192) print "Got data from ", address s.sendto("Data is received succeefully.", address) except (KeyboardInterrupt, SystemExit): print "raise" raise except : print "traceback" traceback.print_exc() 其中,host置為空,意思是可以綁定到所有的接口和地址,無論是哪個客戶端的請求,只要是綁定到了同樣的端口,那么服務器就可以監聽到這個請求。
在tcp連接中,監聽客戶端的請求需要用到listen或accept函數,并有一個專門的socket和遠程極其連接。
接著使我們的客戶端實現:
import socket, sys# Step1: 輸入host和port信息host = raw_input('please input host name: ')textport = raw_input('please input textport: ')# Step2: 創建socket對象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try: port = int(textport)except ValueError: port = socket.getservbyname(textport, 'udp')# Step3: 打開socket連接 s.connect((host, port))# Step4: 發送數據print "Enter data to transmit: "data = sys.stdin.readline().strip()s.sendall(data)# Step5: 接收服務器發過來的數據print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"while 1: buf = s.recv(2048) if not len(buf): break sys.stdout.write(buf) 這個例子就是這么簡單,實現起來和C語言版的差不多??磥?,只要是了解socket編程的,用不同的語言實現也會相差無幾。



















