程序媛计划——python 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() #关闭连接
#先运行服务器端,再运行客户端
#效果