程序媛計劃——python socket通信
阿新 • • 發佈:2017-09-20
nbsp 進程 true 字符 消息 log serve 成功 socket通信
定義
socket 是進程間的一種通信方式,可以實現不同主機間的數據傳輸
#寫服務期端程序server.py
#實現服務器向客戶端連接
1 #!/usr/bin/env python 2 #coding:utf-8 3 import socket 4 s= socket.socket() 5 #127.0.0.1是本地主機,1234是隨意設置到一個端口號 6 s.bind((‘127.0.0.1‘,1234)) #綁定端口號為1234 7 8 #等待客戶端連接 9 s.listen(5) 10 while True: 11 c, addr= s.accept() #連接後會得到connect和一個address12 print u"連接地址為",addr 13 c.send("成功連接至服務器") #向客戶端發送消息 14 c.close() #關閉連接
#效果:運行成功後cosole應該是沒有任何顯示的
#可能會出現端口被占用的情況
#解決措施
#再新建一個client.py
1 #!/usr/bin/env python 2 #coding:utf-8 3 import socket 4 s=socket.socket() 5 s.connect((‘127.0.0.1‘,1234))
#s.recv(1024)表示每次最多接收1024字節的數據 6 print s.recv(1024) #這裏收到的就是server的s.send()中的內容 7 s.close()
#在客戶端運行代碼後發現服務器端和客戶端console顯示如下,表示連接成功
#服務器端成功打印出鏈接地址(server.py中的addr)
#模擬客戶端向服務器端發送消息
#服務器端
1 #!/usr/bin/env python 2 #coding:utf-8 3 import socket 4 s= socket.socket() 5 #127.0.0.1是本地主機,1234是隨意設置到一個端口號 6 s.bind((‘127.0.0.1‘,1234)) #綁定端口號為1234 7 8#等待客戶端連接 9 s.listen(5) 10 while True: 11 c, addr= s.accept() #連接後會得到connect和一個address 12 print u"連接地址為",addr 13 c.send("成功連接至服務器") #向客戶端發送消息 14 15 #eval將收到的字符串轉化為dict 16 dict=eval(c.recv(1024)) 17 if dict: 18 print "收到的日記為",dict 19 print "日記的標題為",dict[‘title‘] 20 print "日記的內容為",dict[‘content‘] 21 22 23 24 c.close() #關閉連接
#客戶端
1 #!/usr/bin/env python 2 #coding:utf-8 3 import socket 4 s= socket.socket() 5 #127.0.0.1是本地主機,1234是隨意設置到一個端口號 6 s.bind((‘127.0.0.1‘,1234)) #綁定端口號為1234 7 8 #等待客戶端連接 9 s.listen(5) 10 while True: 11 c, addr= s.accept() #連接後會得到connect和一個address 12 print u"連接地址為",addr 13 c.send("成功連接至服務器") #向客戶端發送消息 14 15 #eval將收到的字符串轉化為dict 16 dict=eval(c.recv(1024)) 17 if dict: 18 print "收到的日記為",dict 19 print "日記的標題為",dict[‘title‘] 20 print "日記的內容為",dict[‘content‘] 21 22 23 24 c.close() #關閉連接
#先運行服務器端,再運行客戶端
#效果
程序媛計劃——python socket通信