2008-09-16 9 views
37

में सॉकेट खोलने का सबसे अच्छा तरीका मैं पायथन में एक टीसीपी क्लाइंट सॉकेट खोलना चाहता हूं। क्या मुझे सभी निम्न-स्तरीय बीएसडी बनाने-सॉकेट-हैंडल/कनेक्ट-सॉकेट सामग्री से गुजरना है या क्या एक आसान एक-लाइन तरीका है?पायथन

+0

[पायथन सॉकेट मॉड्यूल] (http://docs.python.org/library/socket) सहायक होना चाहिए। – owenmarshall

उत्तर

63

पायथन में खुले सॉकेट बहुत सरल हैं। आप वास्तव में सिर्फ कुछ इस तरह की जरूरत है:

import socket 
sock = socket.socket() 
sock.connect((address, port)) 

और फिर आप कर सकते हैं send() और किसी भी अन्य सॉकेट

+4

चेतावनी: '(पता, बंदरगाह)' एक ट्यूपल है और इस प्रकार एक तर्क है, दो तर्क नहीं! स्पष्टता के लिए कोई इसे इस तरह लिख सकता है: 'sock.connect ((पता, पोर्ट,))' – johndodo

+14

आपके ट्यूपल के अंत में कॉमा जोड़ने से स्पष्टता बढ़ जाती है? – Jack

11

अजगर में किसी भी प्रकार की पोर्टेबल नेटवर्क कार्यक्रमों को विकसित करने के लिए की तरह recv(), Twisted काफी उपयोगी है। इसके लाभों में से एक निम्न स्तर के सॉकेट एपीआई के ऊपर एक सुविधाजनक परत प्रदान कर रहा है।

+0

ट्विस्ट = ओवरकिल –

17

ठीक है, यह कोड काम किया

s = socket.socket() 
s.connect((ip,port)) 
s.send("my request\r") 
print s.recv(256) 
s.close() 

ऐसा नहीं है कि अजगर सॉकेट मॉड्यूल प्रलेखन से बाहर काम करने के लिए काफी मुश्किल था। तो मैं The.nnti.9 के जवाब को स्वीकार करूंगा।

+0

भविष्य के संदर्भ के लिए, यह आम तौर पर 256 बाइट्स से socket.recv() के लिए एक बड़े पैरामीटर का उपयोग करने के लिए ध्वनि अभ्यास है। मैंने अक्सर 4096 उपयोग किया है। – junkforce

+0

हां, अच्छा विचार जंकफोर्स। पाठ के एक पंक्ति को पढ़ने के बाद मैं वास्तव में क्या था, अब मैं मेकफ़ाइल() फ़ंक्शन का उपयोग कर प्राप्त डेटा को बफर करने के लिए कर रहा हूं जो एक इलाज करता है। –

+4

आप भेजने के वापसी मूल्य की जांच करना भूल गए हैं। भविष्य में पाठकों के लिए –