首页 > 其他 > 详细

socket

时间:2021-04-08 01:09:24      阅读:18      评论:0      收藏:0      [点我收藏+]

服务端:

import socket,subprocess,threading,logging
‘‘‘
创建日志屏幕格式输出‘‘‘
loger=logging.getLogger(‘service‘)
loger.setLevel(logging.DEBUG)
fa = logging.Formatter(‘%(asctime)s %(levelname)s :%(message)s ‘)
cf = logging.StreamHandler()

cf.setFormatter(fa)
loger.addHandler(cf)


# a = subprocess.Popen(‘ipconfig‘,shell=True)
# a.wait()

‘‘‘
建立文件如 s1.py
‘‘‘
lient_list = [] # 存放客户端的对象
def service_to_client(var):
fd=var.fileno() # 输出对于客户端的文件编号
try:
while True:
mess_c=var.recv(1024)
print(‘[客户端编号{}]: {}‘.format(fd,mess_c.decode(‘utf-8‘)))
if mess_c.decode(‘utf-8‘) == ‘close‘:
loger.debug(‘接受到关闭请求,发送确认,即将关闭‘)
var.send(mess_c)
var.close()
break
var.send(mess_c) # 返回给相应的客户端
except Exception as e:
print(‘客户端异常断开‘,e)

def reginer_sql():
‘‘‘
存放客户端的注册账号信息,用于用户登录确认操作
:return:
‘‘‘

ser_obj=socket.socket(family=-1,type=-1)
address = (‘192.168.1.205‘,5050)
ser_obj.bind(address)
ser_obj.listen(2)

while True: #循环服务器,堵塞式等待连接
print(‘waitting.....‘)
cli_socket,port = ser_obj.accept()
lient_list.append(cli_socket)
for i in lient_list:
threading.Thread(target=service_to_client,args=(cli_socket,)).start() # 当有客户端链接时,就开启一个进程


客户端:
import  socket
cli1_obj=socket.socket(family=-1,type=-1)
address = (‘192.168.1.205‘,5050)
cli1_obj.connect(address)

def reginer():
‘‘‘
注册函数,账号和密码登录正确后才能进行通信
:return:
‘‘‘

while True:
cli1_obj.send((input(‘>>>>>>>>>>:‘)).encode(‘utf-8‘))
mess_ser = cli1_obj.recv(1024)
print(‘service Confirmed:{}‘.format(mess_ser.decode(‘utf-8‘)))
if mess_ser.decode(‘utf-8‘) == ‘close‘:
print(‘服务端已确认,可关闭‘)
cli1_obj.close()
break

socket

原文:https://www.cnblogs.com/yhmdj/p/14629968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!