python 服務(wù)器開(kāi)發(fā)
連接函數(shù)
Python服務(wù)器開(kāi)發(fā)三:Socketsocket是操作系統(tǒng)中I/O的延續(xù),它可以使進(jìn)程和機(jī)器之間的通信成為可能。socket可以看成一個(gè)標(biāo)準(zhǔn)的文件描述符。不同的是文件需要用open函數(shù)打開(kāi),而socket用socket
函數(shù)建立.recv、send函數(shù)和read、write函數(shù)極為相似。
TCP一般通過(guò)accept來(lái)為每個(gè)連接的客戶端建立一個(gè)新的scoket。UDP一般只是使用一個(gè)單一的socket,完全依靠recvfrom返回的值來(lái)判斷該往哪里發(fā)送響應(yīng)。
客戶端:
1、建立一個(gè)socket:
//SOCK_STREAM表示TCP,SOCK_DGRAM表示UDP,AF_INET表示IPv4
s=socket.socket
2、連接socket
連接socket需要一個(gè)tuple參數(shù),來(lái)提供IP和端口號(hào):
s.connect)
3、
#!/usr/bin/envpythonimportsocketprint"Creatingsocket...",s=socket.socketprint"done."print"Lookingupportnumber...",port=socket.getservbynameprint"done."print"Connectingtoremotehostonport%d..."%port,s.connect)print"done."#獲取本身的IP和端口號(hào)print"Connectedfrom",s.getsockname#獲取遠(yuǎn)程的IP和端口號(hào)print"Connectedto",s.getpeername
文件類對(duì)象:
importsocket,sysport=70host=sys.argv1filename=sys.argv2s=socket.sockets.connect)fd=s.makefilefd.writeforlineinfd.readlines:sys.stdout.write
高級(jí)接口:
importurllib,sysf=urllib.urlopenwhile1:buf=f.readifnotlen:breaksys.stdout.write
服務(wù)器端:
1、建立一個(gè)連接:
s=socket.socket
2、設(shè)置socket選項(xiàng):
//socket端口可立即復(fù)用s.setsockopt
3、綁定socket:
s.bind)
4、監(jiān)聽(tīng):
s.listen
5、接受連接:
s=socket.socket0
6、
s=socket.socket1
使用UDP:
#!/usr/bin/envpythonimportsocket,tracebackhost=''#Bindtoallinterfacesport=51423s=socket.sockets.setsockopts.bind)while1:try:message,address=s.recvfromprint"Gotdatafrom",address#Echoitbacks.sendtoexcept:raiseexcept:traceback.print_exc
Tags:連接函數(shù),python 服務(wù)器開(kāi)發(fā)
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信