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

نام تاپیک: سوکت نویسی در پایتون

  1. #1

    سوکت نویسی در پایتون

    سلام دوستان
    میخوام ی برنامه ای بنویسم که وقتی اطلاعات از کلاینت به سرور میره یا برعکس اطلاعات هش بشه مثلا با base64 .میخوام که متن از کاربر گرفته بشه.
    import socket
    host='localhost'
    port=1891
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((host,port))
    s.listen(1)
    conn,addr=s.accept()
    print addr
    while 1:
    data=conn.recv(1024)
    if not data:break
    conn.send(data)
    conn.close()


    import socket
    host='localhost'
    port=1891
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((host,port))
    s.listen(1)
    conn,addr=s.accept()
    print addr
    while 1:
    data=conn.recv(1024)
    if not data:break
    conn.send(data)
    conn.close()
    اگه این کد کامل نمیکیند حداقل بگید از چه منبعی سوکت در پایتون یادبگیرم . برای پروژم نیاز دارم.

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

    نقل قول: سوکت نویسی در پایتون

    از فریم ورک twisted استفاده کن.. اگه هم از ساکت معمولی میخوای استفاده کنی کافیه متنی که از کاربر میگری رو base64 کنی و اونور متنی که میاد رو decode کنی..

  3. #3

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط n.nowroozi مشاهده تاپیک
    از فریم ورک twisted استفاده کن.. اگه هم از ساکت معمولی میخوای استفاده کنی کافیه متنی که از کاربر میگری رو base64 کنی و اونور متنی که میاد رو decode کنی..
    مشکلم اینه که متنی که از کلاینت میفرستم به سرور تو سمت سرور نمیره . یعنی وقتی ران میکنم متنی که سمت کلاینت مینوسیم تو سمت سرور نوشته نمیشه.یعنی ارسال نمیشه که بخوام رمز کنم.اینو چکار کنم.

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

    نقل قول: سوکت نویسی در پایتون

    والا من تاحالا قسمت نشده با این کتابخونه socket که شما استفاده کردی کار کنم.. ولی خب یه راه باگ یابیش اینه که به جای کلاینت telnet معمولی بزنی به اون پرت که بفهمی سرورت داره درست کار میکنه یا نه.. اگه درست کار میکرد که میفهمی مشکل از سمت کلاینتت هست.

  5. #5

    نقل قول: سوکت نویسی در پایتون

    دوست عزيز دستوراتي كه بالا زديد فقط مربوط به سرور ميشه ... سمت كلاينتش رو هم بذار

  6. #6

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط arman54 مشاهده تاپیک
    دوست عزيز دستوراتي كه بالا زديد فقط مربوط به سرور ميشه ... سمت كلاينتش رو هم بذار
    ببخشید حواسم نبود.
    اینم کدش:
    from socket import *

    HOST = 'localhost'
    PORT = 28812
    BUFSIZE = 1024
    ADDR = (HOST, PORT)
    tcpTimeClientSock = socket(AF_INET, SOCK_STREAM)
    tcpTimeClientSock.connect(ADDR)
    while True:
    data = raw_input('> ')
    if not data:
    break
    tcpTimeClientSock.send(data)
    data = tcpTimeClientSock.recv(BUFSIZE)
    if not data:
    break
    print data
    tcpTimeClientSock.close()


    from socket import *from time import ctime
    HOST = 'localhost'
    PORT = 28812
    BUFSIZE = 1024


    ADDR = (HOST, PORT)


    tcpTimeSrvrSock = socket(AF_INET,SOCK_STREAM)
    tcpTimeSrvrSock.bind(ADDR)
    tcpTimeSrvrSock.listen(50)


    while True:
    print 'waiting for connection...'
    tcpTimeClientSock, addr = tcpTimeSrvrSock.accept()
    print '...connected from:', addr


    while True:
    data = tcpTimeClientSock.recv(BUFSIZE)
    print(data)
    if not data:
    break
    tcpTimeClientSock.send('[%s] %s' % (ctime(), data))

    tcpTimeClientSock.close()
    tcpTimeSrvrSock.close()

  7. #7

    نقل قول: سوکت نویسی در پایتون

    هم توي سرور و هم كلاينت بايد ADDR رو بصورت زير تعريف كني:


    ADDR=((HOST,PORT))
    2تا پرانتز تودرتو ميخواد

  8. #8

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط arman54 مشاهده تاپیک
    هم توي سرور و هم كلاينت بايد ADDR رو بصورت زير تعريف كني:


    ADDR=((HOST,PORT))
    2تا پرانتز تودرتو ميخواد
    مرسی داداش درست شد

  9. #9

    نقل قول: سوکت نویسی در پایتون

    سلام
    خواستم ی چت دوطرفه برقرار کنم .تواین دو تاکد سرور اجرا میشه منتظر کلاینت میمونه ولی کلاینت فقط خط اول رو چاپ میکنه و از برنامه خارج میشه. چرا؟ مگه بعد از sys.exit نباید وارد ادامه برنامه بشه؟

    import socket, select, string, sys 
    def prompt() :
    sys.stdout.write('<You> ')
    sys.stdout.flush()

    #main function
    if __name__ == "__main__":

    if(len(sys.argv) < 3) :
    print 'Usage : python telnet.py hostname port'
    sys.exit(0)

    host = sys.argv[1]
    port = int(sys.argv[2])

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(2)

    # connect to remote host
    try :
    s.connect((host, port))
    except :
    print 'Unable to connect'
    sys.exit()

    print 'Connected to remote host. Start sending messages'
    prompt()

    while 1:
    socket_list = [sys.stdin, s]

    # Get the list sockets which are readable
    read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])

    for sock in read_sockets:
    #incoming message from remote server
    if sock == s:
    data = sock.recv(4096)
    if not data :
    print '\nDisconnected from chat server'
    sys.exit()
    else :
    #print data
    sys.stdout.write(data)
    prompt()

    #user entered a message
    else :
    msg = sys.stdin.readline()
    s.send(msg)
    prompt()




    import socket, select 
    #Function to broadcast chat messages to all connected clients
    def broadcast_data (sock, message):
    #Do not send the message to master socket and the client who has send us the message
    for socket in CONNECTION_LIST:
    if socket != server_socket and socket != sock :
    try :
    socket.send(message)
    except :
    # broken socket connection may be, chat client pressed ctrl+c for example
    socket.close()
    CONNECTION_LIST.remove(socket)

    if __name__ == "__main__":

    # List to keep track of socket descriptors
    CONNECTION_LIST = []
    RECV_BUFFER = 4096 # Advisable to keep it as an exponent of 2
    PORT = 5000

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # this has no effect, why ?
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_socket.bind(("0.0.0.0", PORT))
    server_socket.listen(10)

    # Add server socket to the list of readable connections
    CONNECTION_LIST.append(server_socket)

    print "Chat server started on port " + str(PORT)

    while 1:
    # Get the list sockets which are ready to be read through select
    read_sockets,write_sockets,error_sockets = select.select(CONNECTION_LIST,[],[])

    for sock in read_sockets:
    #New connection
    if sock == server_socket:
    # Handle the case in which there is a new connection recieved through server_socket
    sockfd, addr = server_socket.accept()
    CONNECTION_LIST.append(sockfd)
    print "Client (%s, %s) connected" % addr

    broadcast_data(sockfd, "[%s:%s] entered room\n" % addr)

    #Some incoming message from a client
    else:
    # Data recieved from client, process it
    try:
    #In Windows, sometimes when a TCP program closes abruptly,
    # a "Connection reset by peer" exception will be thrown
    data = sock.recv(RECV_BUFFER)
    if data:
    broadcast_data(sock, "\r" + '<' + str(sock.getpeername()) + '> ' + data)

    except:
    broadcast_data(sock, "Client (%s, %s) is offline" % addr)
    print "Client (%s, %s) is offline" % addr
    sock.close()
    CONNECTION_LIST.remove(sock)
    continue

    server_socket.close()



  10. #10

    نقل قول: سوکت نویسی در پایتون

    سمت کلاینت وقتی اجرا میکنم فقط خط اول رو چاپ میکنه و از برنامه خارج میشه.
    وقتی همینو با cmd اجرا میکنم از خط 34 ایراد میگیره. چرا؟

  11. #11

    نقل قول: سوکت نویسی در پایتون

    مرسی. اموزنده بود.

  12. #12

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط arin1365 مشاهده تاپیک
    مرسی. اموزنده بود.

    مشکل ما که حل نشده..
    حل بشه ، اموزنده تر میشه.

  13. #13

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط hirad000 مشاهده تاپیک
    سمت کلاینت وقتی اجرا میکنم فقط خط اول رو چاپ میکنه و از برنامه خارج میشه.
    وقتی همینو با cmd اجرا میکنم از خط 34 ایراد میگیره. چرا؟
    بعد از exit از برنامه خارج ميشه.
    توي كد اول خط33 اونجايي كه از select استفاده كردي با اين دستور ميخاي چيكار كني؟

  14. #14

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط arman54 مشاهده تاپیک
    بعد از exit از برنامه خارج ميشه.
    توي كد اول خط33 اونجايي كه از select استفاده كردي با اين دستور ميخاي چيكار كني؟
    لیست کلاینت هایی که متصل شدند.
    وقتی خط 11 اجرا میشه برنامه بسته میشه. خط 10 چاپ میشه و بعدش از برنامه میادبیرون.

  15. #15

    نقل قول: سوکت نویسی در پایتون

    چون از sys.exit استفاده كردي برنامت بسته ميشه

  16. #16

    نقل قول: سوکت نویسی در پایتون

    نقل قول نوشته شده توسط arman54 مشاهده تاپیک
    چون از sys.exit استفاده كردي برنامت بسته ميشه
    خب اینکه باید باشه ، همینو تو ی برنامه ی دیگ استفاده کردم جواب داد. منظورم sys.exit .. نمیدونم مشکلش چیه. این باید باشه چون ip و پورت رو کلاینت وارد کنه.

    دوستان اگه می تونن کمک کنن
    ممنون میشم

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

  1. سوال: برنامه نویسی سوکت پروگرمینگ در پایتون (Socket Programming in python)
    نوشته شده توسط Adriaan در بخش دیگر زبان های اسکریپتی
    پاسخ: 5
    آخرین پست: پنج شنبه 28 مهر 1390, 11:26 صبح
  2. سوال: مشکل در سوکت نویسی
    نوشته شده توسط gammast در بخش PHP
    پاسخ: 5
    آخرین پست: سه شنبه 24 اردیبهشت 1387, 22:26 عصر
  3. درخواست اموزش سوکت نویسی
    نوشته شده توسط kitten در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: جمعه 03 اسفند 1386, 13:35 عصر
  4. برای سوکت نویسی از کجا باید شروع کرد؟؟؟؟؟
    نوشته شده توسط AlirezaBahredar در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: پنج شنبه 06 دی 1386, 10:05 صبح
  5. سوکت نویسی
    نوشته شده توسط tazekaram در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 0
    آخرین پست: پنج شنبه 28 تیر 1386, 17:19 عصر

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

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