㈠ python 怎么去连接宽带拨号
思路:python通过os模块去下发cmd命令,cmd是有现成命令Rasdial来完成拨号
这里必须要手动去设置,用的就是cmd,widows自带的命令开wifi。
㈢ 如何用Python实现实时的网络连接检测
如果你用的socket包里的那些阻塞接口,当然写个线程循环监测时间也没啥,只不过记得在循环内加上个sleep,哪怕是1ms甚至1us的sleep都可以避免CPU被消耗干净。
如果你所说的接收是死循环式里跑socket.recv,它会在recv里阻塞,按你的说法3分钟一个心跳包,时间检测就成了3分钟一次,不太合适。
更好的办法自然是通过epoll/poll之类的方式或者asyncio/twisted/tornado之类的异步回调/协程加时间事件甚至是各种GUI框架的事件循环来启动你的发送和接收。考虑到以后可能有多设备,显然利用这些成型的玩意更合理。
㈣ python怎么连接websocket
不知道是不是要server和client。
给一个例子,基于py27的聊天室,有server,同时client是用python模拟的,如果你想用js写,可以自己写一个
使用前先:
pip install websocket-client
然后运行server、client就可以了
websocket_server.py(服务端)
#-*-encoding:utf-8-*-
importsys
sys.path.append("..")
fromsocketimport*
importjson,time,threading
reload(sys)
sys.setdefaultencoding("utf8")
config={
'HOST':'127.0.0.1',
'PORT':10010,
'LISTEN_CLIENT':50,
'KEY':'',
'SIZE':2048,
'TIME_OUT':10000,
'HEART_TIME':5,
'MAGIC_STRING':'258EAFA5-E914-47DA-95CA-C5AB0DC85B11',
'HANDSHAKE_STRING':"HTTP/1.1101SwitchingProtocols "
"Upgrade:websocket "
"Connection:Upgrade "
"Sec-WebSocket-Accept:{1} "
"WebSocket-Location:ws://{2}/chat "
"WebSocket-Protocol:chat "
}
classServer():
"""
服务端基类
"""
def__init__(self):
self.sock=socket(AF_INET,SOCK_STREAM)
self.sock.bind((config['HOST'],config['PORT']))#监听端口
self.sock.listen(config['LISTEN_CLIENT'])#监听客户端数量
#所有监听的客户端
self.clients={}
self.thrs={}
self.users={}
self.stops=[]
self.onlineusers=[]
#监听客户端连接
deflisten_client(self):
while1:
#循环监听
tcpClientSock,addr=self.sock.accept()
address=addr[0]+':'+str(addr[1])#ip:port
#握手
topInfo=tcpClientSock.recv(1024)
headers={}
ifnottopInfo:
self.onlineusers.remove(self.users[address])
tcpClientSock.close()
continue
header,data=topInfo.split(' ',1)
try:
getInfo=header.split(' ')[0].split('')[1].split('/')[1:]
ifgetInfo[0]=='name':
self.users[address]=str(getInfo[1])
self.onlineusers.append(self.users[address])
else:
self.users[address]=u'匿名用户'
except:
self.users[address]=u'匿名用户'
print"thisisself.users[address]:"
printself.users[address]
forlineinheader.split(' ')[1:]:
key,val=line.split(':',1)
headers[key]=val
if'Sec-WebSocket-Key'notinheaders:
self.onlineusers.remove(self.users[address])
tcpClientSock.close()
continue
importhashlib,base64
sec_key=headers['Sec-WebSocket-Key']
res_key=base64.b64encode(hashlib.sha1(sec_key+config['MAGIC_STRING']).digest())
str_handshake=config['HANDSHAKE_STRING'].replace('{1}',res_key).replace('{2}',config['HOST']+':'+str(config['PORT']))
tcpClientSock.send(str_handshake)
#握手成功分配线程进行监听
print(address+u'进来了')
self.clients[address]=tcpClientSock
self.thrs[address]=threading.Thread(target=self.readMsg,args=[address])
self.thrs[address].start()
time.sleep(0.5)
defreadMsg(self,address):
ifaddressnotinself.clients:
returnFalse
client=self.clients[address]
importselect
time_out=0
while1:
ifaddressinself.stops:
self.close_client(address)
print(address+u'已经离开了系统!')
break
#检测超时
iftime_out>=config['TIME_OUT']:
self.close_client(address)
break
time_out+=5
infds,outfds,errfds=select.select([client,],[],[],5)
iflen(infds)==0:
continue
time_out=0
try:
info=client.recv(1024)
except:
self.close_client(address)
break
ifnotinfo:
continue
ifinfo=='quit':
self.close_client(address)
break
code_len=ord(info[1])&127
ifcode_len==126:
masks=info[4:8]
data=info[8:]
elifcode_len==127:
masks=info[10:14]
data=info[14:]
else:
masks=info[2:6]
data=info[6:]
i=0
raw_str=""
fordindata:
#print(masks,masks[i%4])
raw_str+=chr(ord(d)^ord(masks[i%4]))
i+=1
print"thisisraw_stryesthisisraw_str"
printrepr(raw_str)
#获取到输入的数据向所有的客户端发送
#开启线程记录
ifraw_str:
t1=threading.Thread(target=self.send_data,args=[raw_str,address])
t1.start()
time.sleep(0.5)defonlineuser(self):
fromurllibimportunquote
username=[]
foriinself.onlineusers:
i=unquote(i).encode('utf8')
username.append(str(i))
returnusername
defsend_data(self,data,address):
importstruct
fromurllibimportunquote
try:
username=unquote(self.users[address])
except:
username=u'匿名用户'
'''封装数据'''
reply={}
ifdata:
data=data.split("}")[0]+"}"
data=json.loads(data);
'''如果有人加入的话,消息封装如下:'''
ifdata["type"]=="JOIN":
reply["type"]="JOIN"
reply["data"]=data["username"]
reply["user_from"]=data["username"]
reply["user"]=self.onlineuser()
'''如果有人发消息,判断是发送给全部还是个人'''
elifdata["type"]=="POST":
reply["type"]="POST"
ifdata["sendto"]=="ALL":
reply["data"]="["+data['username']+"]:"+data["content"]
else:
reply["data"]=u"["+data['username']+"]悄悄对["+data["sendto"]+"]说:"+data["content"]
reply["user_from"]=data["username"]
reply["user"]=self.onlineuser()
reply["sendto"]=data["sendto"]
'''如果是退出的消息,封装如下'''
elifdata["type"]=="QUIT":
self.close_client(address)
reply["type"]="QUIT"
reply["user_from"]=data["username"]
reply["user"]=self.onlineuser()
reply=json.mps(reply)
else:
returnFalse
token="x81"
length=len(reply)
iflength<126:
token+=struct.pack("B",length)
eliflength<=0xFFFF:
token+=struct.pack("!BH",126,length)
else:
token+=struct.pack("!BQ",127,length)
#struct为Python中处理二进制数的模块,二进制流为C,或网络流的形式。
alldata='%s%s'%(token,reply)
try:
#判断消息如果是私聊的,找出sendto和sendfrom进行单发
ifdata["type"]=="POST":
ifdata["sendto"]!="ALL":
forkey,valinself.users.iteritems():
printkey,unquote(val)
val=unquote(val)
ifval==data["sendto"]orval==data["username"]:
printkey
self.clients[key].send(alldata)
else:
forkey,valinself.clients.iteritems():
client=val
try:
client.send(alldata)
except:
self.close_client(key)
else:
forkey,valinself.clients.iteritems():
client=val
try:
client.send(alldata)
except:
self.close_client(key)
except:
pass
defclose_client(self,address):
try:
client=self.clients.pop(address)
self.stops.append(address)
self.onlineusers.remove(self.users[address])
client.close()
delself.users[address]
except:
pass
print(address+u'已经退出')if__name__=='__main__':
s=Server()
s.listen_client()websocket_client.py(客户端)
#-*-encoding:utf-8-*-
importsys
sys.path.append("..")
fromsocketimport*
importjson,time,threading
fromwebsocketimportcreate_connection
reload(sys)
sys.setdefaultencoding("utf8")
#config={
#'HOST':'127.0.0.1',
#'PORT':10010
#}
#pipinstallwebsocket-client
classClient():
def__init__(self):
#调用create_connection方法,建立一个websocket链接
self.ws=create_connection("ws://127.0.0.1:10010/name/johanna")
#建一个线程,监听服务器发送给客户端的数据
self.trecv=threading.Thread(target=self.recv)
self.trecv.start()
#建立链接后,给聊天室大家群发一个加入消息
msg={
"type":"JOIN",
"username":"johanna",
"content":"HelloEvery,anewguycomein"
}
msg=json.mps(msg)
self.ws.send(msg)
#发送方法,聊天输入语句时调用,此处默认为群聊ALL
defsend(self,content):
msg={
"type":"POST",
"username":"johanna",
"sendto":"ALL",
"content":content
}
msg=json.mps(msg)
self.ws.send(msg)
#接收服务端发送给客户的数据,只要ws处于连接状态,则一直接收数据
defrecv(self):
try:
whileself.ws.connected:
result=self.ws.recv()
print"receivedmsg:"+str(result)
exceptException,e:
pass
#关闭时,发送QUIT方法,并告诉大家,我要走了
defclose(self):
msg={
"type":"QUIT",
"username":"johanna",
"content":"byebye,everyone"
}
msg=json.mps(msg)
self.ws.send(msg)
if__name__=='__main__':
c=Client()
#当输入聊天语句非exit时,则持续聊天状态,如果exit,则关闭链接
whileTrue:
content=raw_input("pleaseinput(inputexittoexit):")
ifcontent=="exit":
c.close()
break
else:
c.send(content)
time.sleep(1)
㈤ 如何使用python进行拨号上网及断开连接
思路:python通过os模块去下发cmd命令,cmd是有现成命令rasdial来完成拨号
㈥ 如何使用python进行拨号上网及断开连接
我知道你想干什么坏事。
1.在路由上设置拨号上网,用python urllib2模块模拟人为操作登录路由器拨号的断开连接。通用性不好。不推荐。
2.用python sendkeys模块模拟按键操作,很容易实现,不够可靠,不推荐。
3.rasdial.exe是WINDOWS 下的命令行工具,可以断开和连接网络连接。你用python调这个工具来实现就行。容易实现,推荐。
4.再就是楼上说的win32ras模块。推荐。
㈦ 如何使用Python连接远程Windows服务器
在服务器的电脑上添加第二块网卡,用于连接Internet。用域管理员账户在远程访问服务器上登录。为第二块网卡添加公网IP地址
在远程访问服务器上,从“管理工具”中打开,“服务器管理器”窗口,选中“角色”,单击“添加角色”,打开“添加角色向导”窗口。
在弹出来的“开始之前”窗口中点击“是”按钮。
单击“下一步”“进入选择服务器角色””窗口,选择“网络策略和访问服务”单击“下一步”。
在“网络策略和访问服务”简介窗口单击“下一步”,在“选择角色服务”窗口选择“路由和远程访问服务”。
接下来会显示安装进度
等安装好了以后,点击关闭就可以了。
㈧ python怎么用代码打开网络
摘要 Python打开网页方法一:
㈨ Python 怎样判断本机是否接入网络,有什么好的办法没有
用urllib.urlopen读取, 然后看下是否有“<title>网络一下”之类的关键词比较靠谱, 比如
In [1]: import urllib
In [2]: is_online = u'<title>网络一下,你就知道' in urllib.urlopen("http://www..com/").read().decode('gbk')
In [3]: print is_online
True
㈩ 求助.Python如何获取wifi信号,并且自动连接wifi
可以,打开网络和共享中心,选择管理无线网络,双击某一个网络,可以选择是否自动连接,你可以只把那个想设置的网络选择自动连接,其余的都设为手动连接。 还有,可以双击无线网络设置,左边下面有个“更改首选网络的顺序”,把你想连的移到最上面...