עבור לתוכן

בעיה בפייתון, שליחת מידע ב UDP

Featured Replies

פורסם

אני מנסה לשלוח מידע דרך UDP בפייתון

יש לי מחשב ראשון שהוא מוגדר לי כשרת עם IP קבוע (אני קבעתי 192.168.42.1)

ומחשב שני שמתחבר אליו ב WIFI עם IP שגיליתי אותו דרך ה cmd, והוא ( 169.254.145.25)

המחשב השני זיהה את השרת והתחבר אליו עם הסיסמא שקבעתי לרשת

במחשב השני (client) אני מריץ את הקוד הבא כדי לשלוח מחרוזת פשוטה, רק לשם התחלה:


import time

# HOST = "localhost"
HOST = "192.168.42.1"
PORT = 5454
data = "my Text"

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((HOST,PORT))
while True:
s.sendto(data,(HOST,PORT))
print "send: "+ data
time.sleep(1)
import socket

ועל המחשב הראשון (server) אני מריץ את הקוד הזה כדי שיאזין לפורט המדובר:


import time

HOST = "169.254.145.25"
PORT = 5454

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST, PORT))

while True:
data, addr = s.recvfrom(1024)
print addr
print "Message recived: ", data
import socket

הבעיה היא במחשב הראשון שהוא השרת, אני מקבל את הודעת השגיאה הבאה:

s.bind((HOST, PORT))

File "/usr/lib/python2.7/socket.py", line 224, in meth

return getattr(self._sock, name)(*args)

socket.error: [Errno 99] Cannot assign requsted addred

תודה רבה על העזרה.

נערך על-ידי shmulike

פורסם

אתה לא צריך לספק את ה-ip עבור השרת - פשוט תעביר לו מחרוזת ריקה בתור ה-HOST וזה אמור לפתוח אותו לחיבור מכל מחשב ברשת.

פורסם
  • מחבר

הבנתי מה את מה שכתבת.

זה תיקן לי את הבעיה

המחשב השני (קליינט) אני חושב שהוא כן שולח את המידע

אבל המחשב הראשון (השרת) לא מקבל שום דבר, או בכל אופן לא מדפיס על המסך את הקלט

פורסם

נסה קודם כל להריץ את שניהם על אותו מחשב (עם כתובת 127.0.0.1).

יכול להיות שיש לך firewall שחוסם את החיבור, אז אם יש לך כזה תנסה לכבות אותו זמנית.

אתה יכול לנסות כמובן ליצור חיבור TCP ולראות אם זה עובד.

נערך על-ידי שניצל

פורסם
  • מחבר

אני כרגע עובד עם UDP

הרצתי על כל מחשב בנפרד שליחת מידע וקליטת מידע ב 127.0.0.1 שזה localhost שזה בעצם על עצמו

וכל אחד מהם הצליח לשלוח ולקבל את המידע בצורה טובה בלי שגיאות

אבל כאשר אני שולח מאחד לשני זה כבר בעיה ומי שאמור לקלוט לא קולט

פורסם

כאמור:

א. תבדוק אם יש firewall.

ב. תנסה TCP כי אז תוכל לראות אם בכלל יש חיבור בין שני המחשבים, ותראה את השגיאה (אם יש כזו) גם בצד הלקוח.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים