نمایش نتایج 1 تا 22 از 22

نام تاپیک: مشکل در برنامه نویسی سوکت در پایتون

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    Red face مشکل در برنامه نویسی سوکت در پایتون

    سلام دوستان !
    من چند روزی هست که برنامه نویسی سوکت با پایتون رو شروع کردم (پایتون رو در حد بالا بلدم اما سوکت نویسی رو تازه شروع کردم)

    یه فایل سرور و یه فایل کلاینت ساختم.
    مشکلم اینه که میخوام دستورات سیستمی(Linux Consol) رو اجرا کنم ولی ارور زیر رو میده :

    Got connection from ('127.0.0.1', 46466)Linux Mahdi 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/LinuxTraceback (most recent call last): File "ser.py", line 16, in <module> c.send(os.system("uname -a"))TypeError: must be string or buffer, not int


    سورس سرور :

    http://vrl.ir/349979
    سورس کلاینت :

    http://vrl.ir/772438

    کلا میخوام یه سرور + کلاینت بسازم که وقتی این کلاینت وصل شد به سرور بهش نسخه ی کرنل لینوکسی که داره استفاده میکنه با دستور زیر نشون داده بشه :

    os.system("uname -a")


    ممنون میشم کمکم کنید :X
    آخرین ویرایش به وسیله mahdi011 : پنج شنبه 14 فروردین 1393 در 11:31 صبح

  2. #2
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    لینک کدهات ارور میده!
    با twisted کار کن حرف نداره !
    توی توییستد چیزی که میخوای میشه این:
    سرور:

    from twisted.internet.protocol import Protocol, Factory
    from twisted.internet import reactor
    import os

    class Echo(Protocol):
    def connectionMade(self):
    kernel = os.popen('uname -r').readline()
    self.transport.write(kernel)
    def dataReceived(self, data):
    pass


    def main():
    f = Factory()
    f.protocol = Echo
    reactor.listenTCP(8000, f)
    reactor.run()

    if __name__ == '__main__':
    main()



    کلاینت:

    from twisted.internet.protocol import ClientFactory
    from twisted.internet import reactor, protocol
    import sys

    class EchoClient(protocol.Protocol):
    def connectionMade(self):
    pass

    def dataReceived(self, data):
    print "receive:", data


    class EchoClientFactory(ClientFactory):
    protocol = EchoClient

    def clientConnectionFailed(self, connector, reason):
    print 'connection failed:', reason.getErrorMessage()
    reactor.stop()

    def clientConnectionLost(self, connector, reason):
    print 'connection lost:', reason.getErrorMessage()
    reactor.stop()

    def main():
    factory = EchoClientFactory()
    reactor.connectTCP('localhost', 8000, factory)
    reactor.run()

    if __name__ == '__main__':
    main()


    البته دستوری هم که واسه گرفتن کرنل استفاده کردی جواب نمیده چون خروجی رو بر نمیگردونه باید از دستوری که من نوشتم استفاده کنی.

    من یه مقاله ترجمه کردم واسه آشنایی با twisted برای شروع میتونی اون رو بخونی.
    http://pyhome.ir/weblog/2/

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    ممنون داداش :X

    یه مشکل دیگه هم هست !
    من میخوام وقتی سرور + کلاینت اجرا شد یه متن بیاد و بگه یه گزینه انتخواب کنید که این کار با تابع raw_input میشه !-- توی این سوکت هر کار میکنم نمیشه و وقتی میزنم که از کلاینت بخواد توی سرور اجرا میشه :D
    ممنون میشم یه نمونه واسه این هم بنویسید :X
    باتشکر فراوان

  4. #4
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    یه چیزی مثل این باید کارت رو راه بندازه:


    سرور

    from twisted.internet.protocol import Protocol, Factory
    from twisted.internet import reactor
    import os

    class Echo(Protocol):
    def connectionMade(self):
    kernel = os.popen('uname -r').readline()
    self.transport.write(kernel)
    def dataReceived(self, data):
    print data


    def main():
    f = Factory()
    f.protocol = Echo
    reactor.listenTCP(8000, f)
    reactor.run()

    if __name__ == '__main__':
    main()


    کلاینت



    from twisted.internet.protocol import ClientFactory
    from twisted.internet import reactor, protocol
    import sys

    class EchoClient(protocol.Protocol):
    def connectionMade(self):
    pass

    def dataReceived(self, data):
    print "receive:", data
    a = raw_input('type something:')
    self.transport.write(a)


    class EchoClientFactory(ClientFactory):
    protocol = EchoClient

    def clientConnectionFailed(self, connector, reason):
    print 'connection failed:', reason.getErrorMessage()
    reactor.stop()

    def clientConnectionLost(self, connector, reason):
    print 'connection lost:', reason.getErrorMessage()
    reactor.stop()

    def main():
    factory = EchoClientFactory()
    reactor.connectTCP('localhost', 8000, factory)
    reactor.run()

    if __name__ == '__main__':
    main()


  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش نوروزی ممنون ولی یه مشکل دارم !
    من میخوام با دستور if ببینم مقدار input چیه و اگه مثلا 1 بود بنویسه hello ! و میخوام این دستور if توی فایل سرور باشه ...


    ممنون میشم کمکم کنی :X

  6. #6
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    خب کاری نداره که این بخش رو باید اصلاح کنی توی فایل سرور:
        def dataReceived(self, data):

    print data


    باید بشه این:
    def dataReceived(self, data):
    if data == '1':
    print 'hello!'

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش من همین کار رو کردم اما ارور داد !
    ممنون میشم خودت تست کنی یا یه سورس کامل بدی :X
    باتشکر فراوان

  8. #8
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    کدی که نوشتی با اروری که میده رو کامل بنویس

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    این فایل سرور :

    from twisted.internet.protocol import Protocol, Factory
    from twisted.internet import reactor
    import os

    class Echo(Protocol):
    def connectionMade(self):
    kernel = os.popen('uname -a').readline()
    self.transport.write(kernel)

    def dataReceived(self, data, a):
    if data == '1' :
    print 'OHHHHHHHHHHHHHH :D'


    def main():
    f = Factory()
    f.protocol = Echo
    reactor.listenTCP(8000, f)
    reactor.run()

    if __name__ == '__main__':
    main()


    اینم فایل کلاینت :

    from twisted.internet.protocol import ClientFactory
    from twisted.internet import reactor, protocol
    import sys

    class EchoClient(protocol.Protocol):
    def connectionMade(self):
    pass

    def dataReceived(self, data):
    print "receive:", data
    a = raw_input('type something:')
    self.transport.write(a)


    class EchoClientFactory(ClientFactory):
    protocol = EchoClient

    def clientConnectionFailed(self, connector, reason):
    print 'connection failed:', reason.getErrorMessage()
    reactor.stop()

    def clientConnectionLost(self, connector, reason):
    print 'connection lost:', reason.getErrorMessage()
    reactor.stop()

    def main():
    factory = EchoClientFactory()
    reactor.connectTCP('localhost', 8000, factory)
    reactor.run()

    if __name__ == '__main__':
    main()


    اروری که توی سرور میاد :

    m4hdi@M4hdi:~/Desktop$ python server.py
    Unhandled Error
    Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
    --- <exception caught here> ---
    File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 586, in _doReadOrWrite
    why = selectable.doRead()
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 199, in doRead
    rval = self.protocol.dataReceived(data)
    exceptions.TypeError: dataReceived() takes exactly 3 arguments (2 given)

    اینم اروری که توی کلاینت میاد :
    type something:1
    connection lost: Connection was closed cleanly.

  10. #10
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    def dataReceived(self, data, a):

    خب خودش که نوشته این تابع موقع صدا شدن دوتا متغییر بهش پاس داده میشه در حالی که شما اون a رو اضافه کردی!! اون هیچ کارایی هم نداره برای چی اضافه کردی؟
    اون a رو بردار درست میشه

            if data == '1' :
    print 'OHHHHHHHHHHHHHH :D'


    if هم تو رفتگی نداره ارور میگیره

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    ممنون داداش
    همین کار رو کردم اما متن : OHHHHHHHHHHHHHH :D توی فایل سرور نشون میده اما باید توی کلاینت نشون بده !
    ممنون میشم کمکم کنی :X

  12. #12
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    به جای پرینت ohhh بنویس:
    self.transport.write('ohhhh')

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    ممنون داداش :X
    واقعا کمکم کردی :X
    ایشالا به هرچی که میخوای برسی :X
    داداش فقط یه سوال کوچولو !
    من میخوام فایل سرور رو بزارم توی سرورم و فایل کلاینت رو بدم به دوستان -- اونوقت چجوری میتونم ارتباط بین اینارو برقرار کنم ؟؟؟
    باتشکر

  14. #14
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    آی پی سرورت رو توی کلاینت ست کنی میبینند همدیگرو

  15. #15
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش ایشالا خیر ببینی :X
    میشه بگی چجوری میتونم توی فایل کلاینت ایپی سرورم رو بزارم ؟
    باتشکر فراوان :X
    بعد میشه بگید این از چه پورتی استفاده میکنه تا توی فایروال بازش کنم ؟
    باتشکر فراوان :X

  16. #16
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    reactor.listenTCP(8000, f)

    8000

        reactor.connectTCP('localhost', 8000, factory)

    اینجا هم جای localhost آی پی سرورت رو بزار

  17. #17
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش نمیدونم چجوری تشکر کنمممممم :X -- واقعا متشکر که کمکم کردی :X

    داداش فقط یه مشکل دیگه هم هست !
    من میخوام وقتی فایل سرور در سرورم اجرا میشه و فایل کلاینت رو میدم به دوستام میخوام زمانی که کلاینت خواست به سرور وصل بشه , فایل سرور چک کنه و ببینه اگه ای پی کلاینت برابر با ایپی که ما وارد کردیم بود بتونه فایل رو ببینه و اگه نبود فایل براش اجرا نشه و کانکشن بسته بشه...
    میشه کمکم کنی ؟
    :X

  18. #18
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    نقل قول نوشته شده توسط mahdi011 مشاهده تاپیک
    داداش نمیدونم چجوری تشکر کنمممممم :X -- واقعا متشکر که کمکم کردی :X

    داداش فقط یه مشکل دیگه هم هست !
    من میخوام وقتی فایل سرور در سرورم اجرا میشه و فایل کلاینت رو میدم به دوستام میخوام زمانی که کلاینت خواست به سرور وصل بشه , فایل سرور چک کنه و ببینه اگه ای پی کلاینت برابر با ایپی که ما وارد کردیم بود بتونه فایل رو ببینه و اگه نبود فایل براش اجرا نشه و کانکشن بسته بشه...
    میشه کمکم کنی ؟
    :X
    شما اون داکیومنتی که دادم رو بخون همه اینها توش هست

  19. #19
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش همون اول اونو خوندم...
    اما چیزی متوجه نشدم و اینایی که میخوام نبود ...
    داداش میشه کمکم کنی ؟
    اخه اخرین و تنها مشکلم همینه :D
    فدایی داری :X

  20. #20
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش توی این لینکی که دادی :
    متد getHost :

    با این میشه ایپی کلاینت وصل شده رو گرفت ؟؟
    من مشکلم اینه که نمیدونم کجا میشه ازش استفاده کرد ...
    ممنون میشم یه نمونه یا یه کمکمی بهم بکنی :X
    فدایی داری

  21. #21
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    37

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    داداش واقعا ممنون میشم همین بار هم کمکم کنی :X
    اخه تنها مشکلم همینه ...
    داداش فدایی داری شدید :X

  22. #22
    کاربر دائمی آواتار n.nowroozi
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    تهران
    پست
    480

    نقل قول: مشکل در برنامه نویسی سوکت در پایتون

    توی سرور این متد رو تغییر بده به پایینی:
        def connectionMade(self):
    kernel = os.popen('uname -r').readline()
    self.transport.write(kernel)


        def connectionMade(self):
    print "connection from", self.transport.getPeer()
    kernel = os.popen('uname -r').readline()
    self.transport.write(kernel)

    اینجا به محض برقراری ارتباط میتونی IP رو بگیری

تاپیک های مشابه

  1. مشکل در برنامه نویسی سوکت در #C
    نوشته شده توسط ail313 در بخش C#‎‎
    پاسخ: 0
    آخرین پست: چهارشنبه 01 شهریور 1391, 19:47 عصر
  2. حرفه ای: مشکل با برنامه نویسی سوکت
    نوشته شده توسط NIMA_1981 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 13
    آخرین پست: یک شنبه 27 فروردین 1391, 09:04 صبح
  3. مشکل با برنامه نویسی سوکت
    نوشته شده توسط NIMA_1981 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: دوشنبه 14 فروردین 1391, 19:24 عصر
  4. سوال: مشکل در برنامه نویسی سوکت و بر قراری اتصال اولیه مشتری با سرور
    نوشته شده توسط ali208 در بخش شبکه و Networking‌
    پاسخ: 12
    آخرین پست: پنج شنبه 10 شهریور 1390, 18:07 عصر
  5. سوال: مشکل در برنامه نویسی سوکت
    نوشته شده توسط *KIARASH* در بخش C#‎‎
    پاسخ: 0
    آخرین پست: شنبه 08 مرداد 1390, 13:43 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •