2013-03-26 9 views
8

मैं नेटवर्किंग प्रोग्रामिंग सीख रहा हूं और इस उदाहरण के माध्यम से सॉकेट की मूल बातें समझने की कोशिश कर रहा हूं।सॉकेट। आतंक: अवैध तर्क

import socket,sys 


s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 

MAX = 65535 
PORT = 1060 

if sys.argv[1:] == ['server']: 
    s.bind(('127.0.0.1',PORT)) 
    print 'Listening at ' , s.getsockname() 
    while True: 
     data,address = s.recvfrom(MAX) 
     print ' The address at ' , address , ' says ' , repr(data) 
     s.sendto('your data was %d bytes' % len(data),address) 

elif sys.argv[1:] == ['client']: 
    print ' Address before sending ' ,s.getsockname() 
    s.sendto('This is the message',('127.0.0.1',PORT)) 
    print ' Address after sending ' ,s.getsockname() 
    data,address = s.recvfrom(MAX) 
    print ' The server at ' , address , ' says ' , repr(data) 

else: 
    print >> sys.stderr, 'usage: udp_local.py server | client ' 

हालांकि, इसकी एक अपवाद getsockname द्वारा दिए गए तर्क कह ऊपर फेंक() विशेष रूप से लाइन पर अमान्य थे 22.The कोड जहाँ तक मैं know.Here अपवाद

Traceback (most recent call last): 
    File "udp_local.py", line 23, in <module> 
    print ' Address before sending ' ,s.getsockname() 
    File "c:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 10022] An invalid argument was supplied 

का उपयोग करना है सही है PyScripter 2.5.3.0 x86

+0

कि विनसॉक है? – wRAR

+0

एक सॉकेट शायद वास्तव में * भेजने से पहले एक पता नहीं होगा, जब तक कि आप पहले इसे 'बाइंड' कहते हैं। मैक पर, मुझे कोई त्रुटि नहीं मिलती है लेकिन लौटा हुआ पोर्ट '0' है (जिसका अर्थ है कि इसे अभी तक एक पोर्ट असाइन नहीं किया गया है)। – robertklep

+0

मैं पायथन का उपयोग कर रहा हूं। मानक सॉकेट मॉड्यूल – devsaw

उत्तर

8

वैसे मुझे समस्या मिली। सॉकेट के पास कोई बाधा नहीं है या उसके बाद डेटा भेजा नहीं जाता है। बस इसे टिप्पणी करना पड़ा।

elif sys.argv[1:] == ['client']: 
## print ' Address before sending ' ,s.getsockname() 

धन्यवाद

+1

आपको एक लिंक जोड़ना चाहिए और अपना उत्तर स्वीकार करना चाहिए –

संबंधित मुद्दे