标签:接受 服务 com 客服端 roc 客户 shadow while dal
服务端:#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
import sys
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind((‘127.0.0.1‘,8080))
sk.listen(5)
while True: #让服务端不停接受客户端
print("开始接受请求!")
conn,addr=sk.accept()
while True:
try: #这里是为了防止当某一个客户端断开后的异常导致服务端停止
msg=conn.recv(1024).decode()
if msg == "exit":
sys.exit("进程通讯结束!")
conn.sendall("服务器端已收到消息!".encode())
print("来自%s向你发送了:%s" %(addr,msg))
except Exception:
break
conn.close()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((‘127.0.0.1‘,8080))
while True:
inp=input("请输入要发送给服务端的消息:")
if not inp:
continue
if inp == "exit":
break
sk.sendall(inp.encode())
print("数据已发送成功等待返回数据")
msg=sk.recv(1024).decode()
print(msg)
sk.close()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((‘127.0.0.1‘,8080))
while True:
inp=input("请输入要发送给服务端的消息:")
if not inp:
continue
if inp == "exit":
break
sk.sendall(inp.encode())
print("数据已发送成功等待返回数据")
msg=sk.recv(1024).decode()
print(msg)
sk.close()
注释:我们在最前面学习了单客户端方式,但有一个问题当客服端断开的时服务端也会被断开,但这不是我们想要的效果,我们希望的服务是希望多客服端和不间断服务,不能因为一个客服端断开就停止服务。所以我们修改一下服务端,让服务端不停的接受客户端连接。这个时候当两个客户端一起发消息的时候只有一个客服端能得到服务端返回数据,另外一个客户端则需要等待第一个客户端连接断开后才能收到服务端的返回值。
标签:接受 服务 com 客服端 roc 客户 shadow while dal
原文地址:http://blog.51cto.com/2032872/2307715