實驗環境:python2
①建立tcpserver.py檔案
②編寫伺服器**
1)建立socket物件,呼叫socket建構函式
2)繫結ip埠(ip號和埠號)
3)設定最大連線數(準備套接字,以便接受連線請求)
4)使用socket的accept()方法等待客戶請求乙個鏈結
5)獲取客戶請求資料
6)關閉連線
**如下:
#tcpserver.py
#!/usr/bin/env python
#from socket import *
import
socket
#開啟ip和埠
ip_port = ('
127.0.0.1
',9999)
#1.生成乙個控制代碼(建立socket物件,呼叫socket建構函式)
sk =socket.socket()
#2.繫結ip埠(ip和埠號)
sk.bind(ip_port)
#3.最多連線數(準備套接字,以便接受連線請求)
sk.listen(5)
#開啟死迴圈
print ('
server waiting...')
#等待鏈結,阻塞,直到渠道鏈結 conn開啟乙個新的物件##
4.伺服器套接字通過socket的accept()方法等待客戶請求乙個鏈結
conn,addr =sk.accept()
#5.獲取客戶端請求資料
print('
successful link,the client address:')
(addr)
while
true:
client_data = conn.recv(1024)
#列印對方的資料
print ('
receive clinet data->
'+client_data)
if client_data=='
q': break
#如果lient_data為空,則跳出迴圈
#向對方傳送資料
conn.send(bytes('
client,i\'m server'))
#關閉鏈結
①建立tcpclient.py檔案
②編寫客戶端**
1)連線服務端ip和埠
2)生成套接字
3)請求連線服務端
4)傳送資料,接受資料
5)關閉連線
#tcpclient.py
import
socket
#連線服務端ip和埠
ip_port = ('
127.0.0.1
',9999)
#生成乙個控制代碼
sk =socket.socket()
#請求連線服務端
sk.connect(ip_port)
while
true:
msg = raw_input('
please input message:\n')
#傳送資料
sk.sendall((msg))
if msg=='
q': break
#如果msg為空,則跳出迴圈
#接收資料
server_reply = sk.recv(1024)
ifnot server_reply: break
#列印接收到的資料
(str(server_reply)) #
關閉連線
①執行tcpserver.py
②執行tcpclient.py
③由客戶端向服務端傳送訊息
執行截圖如下:
①建立udpserver.py檔案
②編寫伺服器**
1)建立socket物件,呼叫socket()建構函式udp需要加引數
2)繫結ip和埠號
3)通訊階段
4)關閉連線
**如下:
①建立udpclient.py檔案
②編寫udp客戶端**
1)建立乙個socket以連線伺服器
2)使用socket的connect()方法連線伺服器
3)通過sendto()和recvfrom()方法通訊
4)關閉連線
**如下:
3.執行客戶端-服務端實現通訊
至此使用python-socket程式設計的tcp和udp程式設計已演示結束。
謝謝!
Python Socket 程式設計
client import socket,sys if name main 處理引數 argv sys.argv if len argv 3 or len argv 2 and argv 1 print useage argv 0 sys.exit 0 host argv 1 server ip位址...
python socket程式設計
python 編寫server的步驟 1.第一步是建立socket物件。呼叫socket建構函式。如 socket socket.socket family,type family引數代表位址家族,可為af inet或af unix。af inet家族包括internet位址,af unix家族用於...
python socket程式設計
客戶端 author lenovo fromsocketimport host localhost port 2157 bufsize 1024 addr host,port tcpclient socket af inet,sock stream tcpclient.connect addr wh...