標籤:
用戶端編程:
首先要建立socket,用python中socket模板中的socket函數就可以了
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket函數後面要帶兩個參數:
Address Family : 可以選擇AF_INET(用於Internet處理序間通訊)或者AF_UNIX(同一台機器間通訊)
Type:通訊端類型,可以是 SOCK_STREAM(流式通訊端,主要用於 TCP 協議)或者SOCK_DGRAM(資料通訊端,主要用於 UDP 協議)
我們知道了伺服器的IP地址和連接埠號碼,我就可以用connect函數串連
s.connect(IP,PORT)
串連上了之後,我們就可以向伺服器發送資料了,
message = data # data是你要發送的資料
發送完之後就,我們就要接受資料
reply = s.recv(1024) #1024是一次可以接受的資料大小
最後我們把串連連接埠就可以了
s.close()
客服端全部的代碼如下:
1 #!usr/bin/env python 2 #coding:utf-8 3 4 import socket 5 6 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 print ‘Socket Created‘ 8 host = ‘www.google.com‘ 9 port = 8010 remote_ip = socket.gethostbyname(host) 11 #擷取host的IP地址,gethostbyname是在你不知道網頁的IP地址的情況下可以擷取網址的IP,一般在自己電腦上的時候是不用的12 print remote_ip13 s.connect((remote_ip,port))14 message = ‘GET / HTTP/1.1\r\n\r\n‘ 15 #這是一個HTTP請求網頁內容的命令16 s.sendall(message)17 print ‘Message send successfully‘18 reply = s.recv(4096)19 print reply20 s.close()
伺服器和用戶端有點不一樣
伺服器主要做的是:
1. 開啟socket;
2.綁定到特定的地址和連接埠上;
3.監聽串連;
4.建立串連;
5.接受或者發送資料
具體代碼如下:
#!usr/bin/env python#coding:utf-8import socketHOST = ‘127.0.0.1‘PORT = 8888s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((HOST,PORT))s.listen(5)while True: conn,addr = s.accept() data = conn.recv(1024) conn.sendall(‘welcome !‘) print data if data == ‘exit‘: 如果接受的data = exit的話就退出迴圈 breakconn.close()s.close()
這樣就差不多了,剩下的就是一些細節方面的問題了. 我一開始寫的時候寫了好久,照著別人的寫總是會出錯,關鍵是別人寫的卻可以運行,心塞!
主要參考的是:
http://www.cnblogs.com/hazir/p/python_socket_programming.html
python socket編程(初級)