|
.•´¯)¸.•´*مهر و کامپیوتر *`•.¸(¯`•. وبلاگ تخصصی رشته نرم افزار
| |||||
|
امام علی (ع) أَلاِْیمانُ عَلی أَرْبَعَةِ أَرْکان: أَلتَّوَکُّلِ عَلَی اللّهِ، وَ التَّفْویضِ إِلَی اللّهِ وَ التَّسْلیمِ لاَِمْرِللّهِ، وَ الرِّضا بِقَضاءِ اللّهِ. ایمان چهارپایه دارد: توکّل بر خدا، واگذاردن کار به خدا، تسلیم به امر خدا و رضا به قضای الهی. برچسبها: مهر نوشت [ جمعه ششم آبان 1390 ] [ ] [ مریم ]
[ ]
[ چهارشنبه بیست و هفتم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
[ سه شنبه بیست و ششم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
برنامه نویسی برای socket
در میان سوکت ها دو نوع سوکت وجود دارند که از همه مهم ترند :
سوکت های نوع استریم خیلی مطمین تر از نوع دیتاگرام هستند یعنی در نوع اول داده ها با رعایت ترتیب و مطمین با نظارت کافی بر خطاهای احتمالی مبادله می شوند ولی در نوع دوم هیچگونه تضمینی برای ترتیب و ارسال داده ها به طور کامل وجود ندارد.
با این موضوع اشنا هستید که هر ارتباطی دو طرفه است. این ارتباط از یک طرف درخواست می شود و طرف دوم ارتباط را می پذیرد (می تواند رد کند) تا از این طریق بتوانند مبادله داده ها و اطلاعات کنند. برنامه ی شروع کننده ارتباط ( در خواست کننده ارتباط ) را برنامه مشتری (Client) می نامند یعنی این برنامه به دنبال برنامه ای است که با ان مبادله داده کند. برنامه ای که این درخواست را قبول یا رد می کند برنامه سرویس دهنده (Server) می گویند.یعنی این برنامه منتظر درخواست می ماند تا در صورت پیدا کردن مشتری با ان ارتباط برقرار کند. نکته: در یک ارتباط برنامه مشتری بیشتر نیازمند داده ها و اطلاعات است و برنامه سرویس دهنده این داده ها و اطلاعات را در اختیار برنامه مشتری قرار می دهد.
پس از اشنا شدن با کلیت کار نوشتن کد را شروع می کنیم اولین کار نوشتن برنامه ی سرویس دهنده است در اینجا مختصر با نحوه نوشتن این برنامه و توابع مطلق به سرویس دهنده اشنا می شوید.
import socket socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) توضیح: ارگومان اولی که متد سوکت گرفته(یعنی AF_INET) برای مشخص کردن خانواده پروتوکل است و چون پروتوکل مورد بحث ما TCP/IP است این تابع ثابت است.
می توانیم یک ادرس هاست هم به ان اختصاص دهیم socket.bind((HOST, PORT))
نکته: این مطلب یادتان باشد که پذیرش تقاضای ارتباط به معنی پذیرفتن داده نیست بلکه فضای لازم برای ارسال و دریافت داده ایجاد می کند. socket.listen(1)
socket.accept()
پس از نوشتن برنامه سرویس دهنده و اجرای ان برنامه منتظر یک درخواست می ماند و این درخواست از طرف برنامه مشتری می باشد که در اینجا مختصر با نحوه نوشتن برنامه مشتری و توابع مطلق به ان اشنا می شوید.
import socket socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((HOST, PORT))
این مسایلی که در بالا توضیح داده شد بسیار اسان بود ولی بحث سوکت به این اسانی که من توضیح دادم نیست .توضیح من شما را با کلیت کار اشنا کرد. برای اینکه یکم بیشتر در مورد این موضوعی که شروع کردیم بفهمید بهتره کد زیر را مطالعه کنید. # Echo server program
import socket
HOST = '' # Symbolic name meaning the local host
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()
# Echo client program
import socket
HOST = 'localhost' # The remote host
PORT = 50007 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', `data`
یه مثال دیگه ای که یکم پیچیده تره... # Echo server program
import socket
import sys
HOST = '' # Symbolic name meaning the local host
PORT = 50007 # Arbitrary non-privileged port
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
except socket.error, msg:
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error, msg:
s.close()
s = None
continue
break
if s is None:
print 'could not open socket'
sys.exit(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()
# Echo client program
import socket
import sys
HOST = 'localhost' # The remote host
PORT = 50007 # The same port as used by the server
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
except socket.error, msg:
s = None
continue
try:
s.connect(sa)
except socket.error, msg:
s.close()
s = None
continue
break
if s is None:
print 'could not open socket'
sys.exit(1)
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', `data`
برچسبها: شبکه های کامپیوتری [ دوشنبه هجدهم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
MOVساده ترين دستورالعمل mov است که دارای دو عملوند است. اين دستورالعمل محتوای دومين عملوند خود را در اولين کپی می کند. فرم کلی آن به صورت زير است: mov Dest, Source دستور mov يک کپی از Source را گرفته و آنرا در Dest ذخيره می کند. محتوای Source بعد از اجرای دستور تغيير نمی کند ولی مقدار قبلی Dest رونويسی می شود. دستور mov مشابه دستور انتساب در زبان های سطح بالا است ( Dest := Source; در زبان Pascal يا Dest=Source; در زبان C). با توجه به نوع عملوندها، انواع مختلفی از دستورالعمل mov را می توان داشت. متداولترین آنها عبارتند از:
چند موضوع مهم درباره دستور mov را باید همواره بخاطر داشت:
مثال. دستور زيرداده فوری 10h را به اندازه يک کلمه گسترش داده و در محلی که BX به آن اشاره می کند ذخيره می کند. mov word ptr [bx], 10h مثال. دستورات زير داده فوری 40h را در ثبات سگمنت ES ذخيره می کند. ثبات AX به عنوان واسطه بکار رفته است. هر کدام از ثبات همه منظوره را می توان به جای AX بکار برد.
mov AX, 40h دستور mov روی هيچکدام از فلگ ها تاثيری ندارد. دستورالعمل xchg محتوای دو عملوند خود را جابجا می کند. فرم کلی آن به صورت زير است: xchg Operand1, Operand2 مقدار هردو عملوند در اثر اجرا تغيير می کند. چهار شکل خاص برای اين دستور وجوددارد:
ترتيب علموندها اهمیت ندارد. می توانید xchg mem,reg یا xchg reg,mem را بنویسید نتیجه فرقی ندارد. اکثر اسمبلرها بطور خودکار کد کوتاهتر را انتخاب می کنند. هردو عملوند باید یک اندازه باشند. دستور xchg روی هيچيک از فلگ ها تاثیر نمی گذارد. دستورالعمل (load effective address) lea برای مقداردهی اشاره گرها استفاده می شود. فرم خاص آن به صورت زیر است: lea register16, memory اين دستور آدرس موثر يک محل خاص از حافظه را درون یک ثبات همه منظوره ذخيره می کند. منظور از آدرس موثر آدرس نهائی حافظه بعد از کلیه محاسبات آدرسی است. مثال. دستور زير مقدار 1234h را در ثبات AX قرار می دهد. lea AX, DS:[1234h] دستور mov ax, immediate data هم همین عمل را انجام می دهد. تفاوت آنها در اين است که دستورالعمل lea محاسبه آدرسی و انتقال داده را همزمان انجام می دهد. مثال. دستور زير آدرس حاصل از محاسبه BP+SI+4 را درثبات AX قرار می دهد. ابتدا مقادير را بهم جمع کرده سپس در ثبات منتقل می کند. lea bx, 4[bp+si] دستورالعمل lea روی فلگ ها تاثير ندارد. برچسبها: مباحث ویژه 2 [ جمعه هشتم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
برچسبها: لینوکس [ جمعه هشتم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
یاس یعنی بوی دل بوی بهشت
برچسبها: مهر نوشت ادامه مطلب [ دوشنبه چهارم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
محاسبه مجموع مربعات یک عدد به زبان پایتونVal=raw_input('please enter a number:') num=int(num) sum=0 while num>0: r=num%10 sum=sum+r**2 num=num/10 print sum برچسبها: برنامه سازی شبکه [ دوشنبه چهارم اردیبهشت 1391 ] [ ] [ مریم ]
[ ]
|
|||||
| [ طراحی : تمزها ] [ Weblog Themes By : Themzha] | |||||