الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية عمل تخطى لعملة الـ input

بدأه Saleh Abbas في 8 نوفمبر 2011 · 4 رد · 932 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قمت بعمل server و client بسيطين بلغة البايثون، وواجهتنى تلك المشكلة التى لم أستطع حلها،

هذا كود الإرسال والإستقبال فى الـ server


message = raw_input(name +' : ')
ch.send(message)
rec = ch.recv(1024)
print rec
while True:

وهذا كود الإرسال والإستقبال فى الـ client


message = raw_input(name + ' : ')
socket.send(message)
rec = socket.recv(1024)
print rec
while True:

فلنفرض مثلاً أنى قمت بتشغيل كلاً من الـ Server/Client، ففى السرفر مثلاً ينتظر أن أقوم بإرسال رسالة إلى العميل، ولكن لنفرض أن العميل أراد إرسال رساله إلى، فهنا تظهر المشكلة، وهى أنك لا يمكنك الإنتقال من جملة الـ input إلى جملة الإستقبال، فينبغى عليك إرسال أى كلمة أخرى حتى ترى الكلمة التى تم إرسالها من قبل العميل.

تم تعديل هذه المشاركة بواسطة Saleh Abbas في 8 نوفمبر 2011 في 19:35

#2

ممكن تستخدم thread لعملية الإستقبال او انك تستخدم select او poll

*ممكن تستخدم ncurses عشان الواجهة في التيرمنال يكون عليها تحكم افضل

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

جزاكم الله خيرًا أستاذى، وفعلاً عمل الرنامج بكفائه، ولكن عند تشغيل الـ Server وتوصيل الـ Client به

، تظهر تلك الرساله، ويكمل الرنامج عمله على أكمل وجه، فلماذا تظهر تلك الرساله ؟


User1 : Traceback (most recent call last):
File "tcpserver.py", line 22, in <module>
Rec_FROM().start()
File "/usr/lib64/python2.7/threading.py", line 473, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread

ومثلها فى الـ Client

هذا كود الـ Server



import socket
import threading

class Send_TO (threading.Thread):
def run(self):
message = raw_input('User1 : ')
ch.send(message)
class Rec_FROM (threading.Thread):
def run(self):
rec = ch.recv(1024)
print rec
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind(('', 5000))
socket.listen(1)

print 'Wait from other friend to connect !\n'
ch, new_socket = socket.accept()
while True:
Send_TO().start()
Rec_FROM().start()
#! /usr/bin/python

هذا كود الـ Client


#! /usr/bin/python

import socket
import threading

class Send_TO (threading.Thread):
def run(self):
message = raw_input('User2 : ')
socket.send(message)
class Rec_FROM (threading.Thread):
def run(self):
rec = socket.recv(1024)
print rec
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect(('localhost', 5000))

while True:
Send_TO().start()
Rec_FROM().start()

تم تعديل هذه المشاركة بواسطة Saleh Abbas في 9 نوفمبر 2011 في 13:21

#4

ألا يوجد حل لهذه المشكلة، وهل هكذا يقوم كل مرة بعمنل create للـ thread وبالتالى سوف تمتلأ الذاكره، ؟

#5

السلام عليكم

إنشاء عدد كبير جدا من الthreads!!!! غير صحيح

القصد هو عمل thread بعد accept لإدارة الحوار مع ال client!

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 11 نوفمبر 2011 في 07:35

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

مواضيع مشابهة