網路程式設計一

2022-08-27 22:48:18 字數 2770 閱讀 9111

1)列印裝置名和ipv4位址

>>> import socket

>>> hostname=socket.gethostname()

>>> address=socket.gethostbyname(hostname)

>>> print address

172.25.254.99

2)通過埠和協議找到服務名

通過函式getservbyport()來獲取名字

3)設定並獲取套接字的時間

可以通過函式gettimeout()和settimeout()來實現

>>> s=socket.socket(socket.af_inet,socket.sock_stream)

>>> s.gettimeout()

>>> print s.gettimeout()

none

>>> s.settimeout(30)

>>> print s.gettimeout()

30.0

4)修改套接字和接受緩衝區的大小

可呼叫函式getsockopt()和setsockopt()分別獲取和修改套接字物件的屬性,setsockopt()方法接受三個引數,level,optname和value。其中optname是選項名value是該選項的值。第乙個引數所用的符號是(so_*)

#!/usr/bin/python

import socket

send_buf_size=4096

recv_buf_size=4096

def modify_buff_size():

s=socket.socket(socket.af_inet,socket.sock_stream)

bufsize=s.getsockopt(socket.sol_socket,socket.so_sndbuf)

print "buffer size [before]:%d"%bufsize

s.setsockopt(socket.sol_tcp,socket.tcp_nodelay,1)

s.setsockopt(socket.sol_socket,socket.so_sndbuf,send_buf_size)

s.setsockopt(socket.sol_socket,socket.so_rcvbuf,recv_buf_size)

bufsize=s.getsockopt(socket.sol_socket,socket.so_sndbuf)

print "buffer size [after]:%d"%bufsize

if __name__=="__main__":

modify_buff_size()

5)把套接字改成阻塞或阻塞模式

可以通過函式setblocking()函式來實現,setblocking(0)表示設為非阻塞模式

>>> import socket

>>> s=socket.socket(socket.af_inet,socket.sock_stream)

>>> s.setblocking(0

6)重用套接字

可以用函式setsockopt(socket.sol_socket,socket.so_reuseaddr,1)實現

網路程式設計(一)

最近在學習網路程式設計,還是寫點筆記來督促下自己,邊寫邊學才不至於懶惰。我其實一直對網路通訊很是好奇,以前也經常想網路遊戲和聊天軟體是如何使使用者互連並進行通訊的呢?後來接觸到套接字,並且還能做些簡單的通訊,但對其中的工作原理渾然不知,凡事總是如此,你不想被某事束縛或牽著鼻子走,就總會想著去了解更深...

網路程式設計(一)

網路通訊三素質 一 ip位址 二 埠號 三 傳輸協議 tcp安全但慢,udp快。socket程式設計 一收一發 在python3裡,無論是收,還是發,必須是 bytes型別。怎麼改?bytes x,utf8 x 是要改的變數,注意後面要加編碼格式 utf8server下的方法 client下的方法 ...

網路程式設計(一)

osi七層模型 開放系統互連參考模型 open system interconnect 是國際標準化組織iso和國際電報 諮詢委員會ccitt聯合制定的開放系統互連參考模型,為開放式互連系統提供了一種功能結構的框架。osi系統分為七層,物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層。tc...