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

كيفية كتابة برنامج Client/Server

مغلق
بدأه مازن أحمد في 20 نوفمبر 2001 · 4 رد · 869 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

شهر مبارك، وكل عام وانتم بخير.

كيف حال اخواني , إن شاء الله بصحة جيد.

اطرح سؤالي في هذا النادي الرائع،وهو عن كيفية كتابة برنامج Client/Server بين

جهازين عن طريق الأنترنت؟

ولدي مشكلتين في هذا الموضوع:

*- كيف يمكن الحصول على عنوان IP المعطى من ISP(مزود خدمة الأنترنت).

*- كيف يمكن معرفة إذا كان الجهاز متصل بالأنترنت عن طريق(مودم،البروكسي،

الشبكة).

ملاحظة

-----: لقد طرحت هذا السؤال في النادي الرائع VB and VB.NETاتمنى لوتطلع على الموضوع

<على صورة اوضح.http://arabteam.nicmatic.com/vb/showthread...p?threadid=5083> للحصول

**** سأطرح كل جديد في هذا الموضوع في هذا النادي و نادي VB and VB.NET إن شاء الله ***

#2

بسم الله الرحمن الرحيم

في البداية اعتذر للأخوة الأعزاء عن انقطاعتي لهذا المنتدى لفترة طويلة

وكذلك اهني الأخوة على المنتدى الجديد

( انا اول مادخلت المنتدى حسبتني غلطان لأني شفت المنتدى متغير بس الحمدلله عرفت السر ) :)

فألف مبرووووووك للجميع

وكذلك ابارك لكم هذا الشهر

على العموم

فيا اخي العزيز مازن احمد

يمكنك تجربة هذا الكود للحصول على رقم الآي بي

uses

WinSock;

function IP: String;

type

TaPInAddr = Array[0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;

var

phe: PHostEnt;

pptr: PaPInAddr;

Buffer: Array[0..63] of Char;

S: Integer;

GInitData: TWSAData;

begin

WSAStartup($101, GInitData);

Result := '';

GetHostName(Buffer, SizeOf(Buffer));

phe := GetHostByName(buffer);

if phe = nil then Exit;

pPtr := PaPInAddr(phe^.h_addr_list);

S := 0;

while pPtr^ <> nil do

begin

Result := inet_ntoa(pptr^^);

Inc(S);

end;

WSACleanup;

end;

اما بالنسبة لمعرفة هل عملية دخول الأنترنت بواسطة المودم ام بواسطة او عن غيره

فيمكنك تجربة هذا الكود

var

CommPort : string;

hCommFile : THandle;

ModemStat : DWord;

begin

CommPort := 'COM2';

{Open the comm port}

hCommFile := CreateFile(PChar(CommPort),

GENERIC_READ,

0,

nil,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

0);

if hCommFile = INVALID_HANDLE_VALUE then

begin

ShowMessage('Unable to open '+ CommPort);

exit;

end;

{Get the Modem Status}

if GetCommModemStatus(hCommFile, ModemStat) <> false then begin

if ModemStat and MS_CTS_ON <> 0 then

ShowMessage('The CTS (clear-to-send) is on.');

if ModemStat and MS_DSR_ON <> 0 then

ShowMessage('The DSR (data-set-ready) is on.');

if ModemStat and MS_RING_ON <> 0then

ShowMessage('The ring indicator is on.');

if ModemStat and MS_RLSD_ON <> 0 then

ShowMessage('The RLSD (receive-line-signal-detect) is

on.');

end;

{Close the comm port}

CloseHandle(hCommFile);

end;

طبعاً هذا الكود يخبرك بحالة المودم فمنها تعرف اذا كان الأتصال عن طريق المودم او غيره :)

وفي الختام تقبل تحياتي اخوك SUM

#3

اشكرك كثيرا:)،واسأل الله العلي القدير ان يزيد عليك من علمه و فضله.

فقد تفاجئت عندما رأية الكود، لم يكن لحل مشكلةواحدة بل المشكلتين معا. ليس هذا فقط،انه يوضح طريقة من طرق الأستفاذة من Winsock API،وكذلك استخدام CreateFile في التعامل مع مصادر الأتصالات Communications resource مثل COM2،فضلا عن استخدامها في انشاء الملفات والكثير... لقد كان هذا رائعا بالفعل:)

اشكرك جزيل الشكر:)

اصدقائي الأعزاء، من أجل أن تعم الفائدة للجميع، فقد وجدت دالة معرفة في الوحدة

Wininet - تغلف دوال WinInet.dll واعتقد انها احدى المكتبات التي تأتي مع IE- بأسم InternetGetConnectedState وهذا تصريحها:

function InternetGetConnectedState(lpdwFlags: LPDWORD;

dwReserved: DWORD): BOOL;

{ Flags for InternetGetConnectedState }

------------------------------------------

INTERNET_CONNECTION_MODEM = 1

INTERNET_CONNECTION_LAN = 2

INTERNET_CONNECTION_PROXY = 4

INTERNET_CONNECTION_MODEM_BUSY = 8

مثال

----:

uses

wininet;

procedure TForm1.Button1Click(Sender: TObject);

var lpdwFlags: LPDWORD;

begin

lpdwFlags := AllocMem(sizeof(DWORD));

if InternetGetConnectedState(lpdwFlags,0) then

Showmessage('You are connect :' + intToStr(lpdwFlags^))

else Showmessage('You are not connect');

lpdwFlags := nil;

end;

--------------------------------------------------------------

مع تحياتي...اخوكم مازن:)

#4

مشكور اخوي احمد على هالكود

وكذلك اشكرك على مشاركاتك القيمة معنا في هذا المنتدى

والى الأمام

اخوك SUM

#5

مرحبا بك اخي العزيز سم ,

والله طولت الغيبة , والحقيقة افتقدناك و افتقدنا مواضيعك الشيقة .

ان شا الله دائما كل الاعضاء بخير و متواجدين معا في هدا المنتدي الجميل .

وشكرا للاخ مازن وكل العام والجميع بخير

شكرا(*)

هذا الموضوع مغلق.

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