1. 程式人生 > >程序媛計劃——python socket通信

程序媛計劃——python socket通信

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和一個address
12 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通信