天天看點

Python-Socket

socket通常也稱作套接字,用于描述IP位址和端口,是一個通信鍊的句柄,應用程式通常通過“套接字”向網絡送出請求或者應答網絡請求

socket既是一種特殊檔案,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)

socket和file的差別

file子產品是針對某個指定檔案進行【打開】【讀寫】【關閉】

socket子產品是針對伺服器端和用戶端socket進行【打開】【讀寫】【關閉】

執行個體:

在wen頁面中通路

傳回http 1.1 200 OK和HelloWorld

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<code>#!/usr/bin/env python</code>

<code>#coding:utf-8</code>

<code>import</code> <code>socket</code>

<code>def</code> <code>handle_request(client):</code>

<code>    </code><code>client.send(</code><code>"HTTP/1.1 200 OK\r\n\r\n"</code><code>)</code>

<code>    </code><code>client.send(</code><code>"Hello, World"</code><code>)</code>

<code>def</code> <code>main():</code>

<code>    </code><code># 建立sock對象</code>

<code>    </code><code>sock</code><code>=</code> <code>socket.socket(socket.AF_INET, socket.SOCK_STREAM)</code>

<code>    </code><code># 監聽端口</code>

<code>    </code><code>sock.bind((</code><code>'localhost'</code><code>,</code><code>8080</code><code>))</code>

<code>    </code><code># 開始監聽</code>

<code>    </code><code>sock.listen(</code><code>5</code><code>)</code>

<code>    </code><code>while</code> <code>True</code><code>:</code>

<code>        </code><code># 阻塞,等連接配接的請求,直到有請求來連接配接</code>

<code>        </code><code># connection:代表用戶端sock的對象</code>

<code>        </code><code># address:用戶端IP位址</code>

<code>        </code><code>connection, address</code><code>=</code> <code>sock.accept()</code>

<code>        </code><code>buf</code><code>=</code> <code>connection.recv(</code><code>1024</code><code>)</code>

<code>        </code><code>print</code> <code>buf</code>

<code>        </code><code>connection.send(</code><code>'http1.1 200 OK\r\n\r\n'</code><code>)</code>

<code>        </code><code>connection.send(</code><code>"Hello World"</code><code>)</code>

<code>        </code><code>connection.close()</code>

<code>if</code> <code>__name__</code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>  </code><code>main()</code>

執行個體:10086服務

服務端:

<code>ip_port</code><code>=</code> <code>(</code><code>'127.0.0.1'</code><code>,</code><code>8888</code><code>)</code>

<code>sk</code><code>=</code> <code>socket.socket()</code>

<code>sk.bind(ip_port)</code>

<code>sk.listen(</code><code>5</code><code>)</code>

<code>while</code> <code>True</code><code>:</code>

<code>    </code><code>conn,address</code><code>=</code>  <code>sk.accept()</code>

<code>    </code><code>conn.sendall(</code><code>'歡迎緻電 10086,請輸入1xxx,0轉人工服務.'</code><code>)</code>

<code>    </code><code>Flag</code><code>=</code> <code>True</code>

<code>    </code><code>while</code> <code>Flag:</code>

<code>        </code><code>data</code><code>=</code> <code>conn.recv(</code><code>1024</code><code>)</code>

<code>        </code><code>if</code> <code>data</code><code>=</code><code>=</code> <code>'exit'</code><code>:</code>

<code>            </code><code>Flag</code><code>=</code> <code>False</code>

<code>        </code><code>elif</code> <code>data</code><code>=</code><code>=</code> <code>'0'</code><code>:</code>

<code>            </code><code>conn.sendall(</code><code>'通過可能會被錄音.........一大推'</code><code>)</code>

<code>        </code><code>else</code><code>:</code>

<code>            </code><code>conn.sendall(</code><code>'請重新輸入.'</code><code>)</code>

<code>    </code><code>conn.close()</code>

用戶端:

<code>sk.connect(ip_port)</code>

<code>sk.settimeout(</code><code>5</code><code>)</code>

<code>    </code><code>data</code><code>=</code> <code>sk.recv(</code><code>1024</code><code>)</code>

<code>    </code><code>print</code> <code>'receive:'</code><code>,data</code>

<code>    </code><code>inp</code><code>=</code> <code>raw_input</code><code>(</code><code>'please input:'</code><code>)</code>

<code>    </code><code>sk.sendall(inp)</code>

<code>    </code><code>if</code> <code>inp</code><code>=</code><code>=</code> <code>'exit'</code><code>:</code>

<code>        </code><code>break</code>

<code>sk.close()</code>

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5570211.html,如需轉載請自行聯系原作者