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

لهواة برمجة الشبكات

مغلق
بدأه إبراهيم_دياب5 في 24 أبريل 2002 · 20 رد · 2,653 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أعزائى لكل من يريد تعلم الشبكات أو عمل برامج للشبكات ولكن ينقصه الممارسة العملية على شبكة حقيقية لعدم أتاحتها له أو لعدم وجود الإماكنيات لشراء العديد من الأجهزة وربطها معاً ، يشرفنى أن أقدم لكم هذا البرنامج الرائع المسمى VMWare والذى يمكنك تحميله من موقعه www.vmware.com هذا البرنامج يعمل من خلال WinXP , Win2000 , Linux بحيث يمكنك من خلاله تشغيل العديد من أنظمة التشغيل الأخرى مثل win98,winnt,win2000 والعديد ..... بل ويمكنك أن تقوم بعمل ما يسمى الـ VIRTUAL MACHEINE تحدد أنت خصائصها بنفسك من حيث المكونات المادية له مثل الكروت ووسائط التخزين وبعدها تقوم بعمل SETUP لنظام التشغيل الذى تريده ، كل هذا يحدث وأنت تعمل على نظام تشغيلك بكل مرونه .. فى النهاية أريد أن أقول أنه يمكنك تشغيل الويندوز 98 فى نفس الوقت مع الويندوز xp أو مع اللينكس على نفس الشاشة.. ويقوم البرنامج بعمل ربط ظاهرى بين هذه الأنظمة بحيث تبدو على شكل شبكة حقيقية وكأنك أمام عدة أجهزة منفصلة..

أعذرونى على عدم مقدرتى على التعبير أو الشرح الجيد ، لكنكم ستجربونه وتعرفون أهميته.

أعتقد أنكم ستحتاجون هذا الرقم: 02L90-01MR5-02X8E-12XDY

أخوكم: إبراهيم دياب / مصر

رجاء من إخوانى فى المنتدى ممن لديهم معلومات فى عمل برامج الشبكات كنت أحب الدخول فى هذا المجال وأريد أى معلومات مهما كانت بسيطه فى هذا المجال مثل:

كيف يمكننى التعرف على الـ workgorups وإظهارها فى listview

كيف يمكننى التعرف على معلومات عن أحد الأجهزة المتصلة بالشبكة مثل مسار الويندوز وما شابه

كيف يمكننى عمل برنامج وتشغيله على جهازين على نفس الشبكة بحيث تقوم كلا النسختين بتبادل المعلومات والبيانات معاً

كيف يمكننى عمل حديث صوتى بين الأجهزة وبعضها (أو لو تعرفون برنامج يقوم بهذه العملية)

#2

السلام عليكم

اهلا و سهلا فيك اخي .

مشكور على هذا الموضوع .

سأحاول الاجابة على بعض اسئلتك .

بالنسبة لمعرفة الـ WorkGroups راجع :

http://arabteam.nicmatic.com/vb/showthread...p?threadid=6041

بالنسبة لمعرفة مسار الويندوز فلا اعلم ( ان كان هناك برنامج في الكمبيوتر الاخر طبعا يسهل معرفة مسار الويندوز ) . ما المقصود بـــ "ما شابه ذلك " ؟

برنامج يوضع على جهازين في شبكة واحدة :

ممكن تستعمل الـ components المرفقة مع الدلفي لعمل ذلك . راجع fast net....

بالنسبة للحديث الصوتي راجع :

http://arabteam.nicmatic.com/vb/showthread...&highlight=chat

تحياتي

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

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

مشكور أخى العزيز tmaaa على محاولتك المساعدة ولكن موضوع ال iphone لم أستطع تشغيله وذلك لأنه يطلب منى كمبونت خاصة بــ udpsock ولا أستطيع حل هذه المشكة . والمقصود بما شابه ذلك أى معلومات خاصة بالتحكم فى جهاز عن طريق جهاز آخر مثلاً:

عرض محتويات القرص الصلب

نسخ أو حذف ملفات من على جهاز آخر

أرجوا أن تكون قد فهمت ما أبغيه أخى العزيز فالشبكات موضوع مهم وجذاب ونتمنى أن نتوغل فيه بقدر الإمكان

#4

السلام عليكم

أخي العزيز

البرنامج IPhone يعمل بصورة جيدة , انا مجربه قبل ان اكتب عنه في المنتدى .

هل تقصد التحكم بكمبيوتر أخر بواسطة برنامج تضعه في الكمبيوتر الأخر ؟( اظن هذا هو المقصود .)

نفس فكرة برامج الـ hackers , لكن للاستعمال الشرعي :D .

تحياتي

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

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

في البداية ارحب بالأخ ابراهيم في هذا المنتدى

وإن شاء الله يستفيد منه ويفيد ايضاً :)

وكذلك اشكر الأخ tmaaa وعلى تفضلة بالأجابة

واعتذ على اللقافه :) ودخلوي في الموضوع من دون داع ;)

على العموم شوف اخوي ابراهيم ادخل الوصلة المذكورة اسفل

وستجد فيها كيفية التحكم بالأجهزة

http://www.arabteam2000.com/vb/showthread....=&threadid=7905

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

#6

السلام عليكم

ايش هذا الكلام اخ SUM ؟ بدك تزعلنا منك .

لا لقافة ولاشي , منكم نستفيد .

منتظرين من الأخ ابراهيم محاولاته . و اي استفسارات الاخوة كلهم في الخدمة و أولهم الاخ SUM

تحياتي

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

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

أخى العزيز tmaaa برنامج الـــ iphone عندما أقوم بفتح الــ source code فى الدلفى يخبرنى بعدم وجود component الــ udpsock والـــ wallpaper وكما قلت برامج إختراق وهاكرز لكن بغــــــرض شـــــــريف أنا مبتدئ فى برمجة الشبكات ولا أعرف عنها أى شئ كل ما توصلت إليه خلال اليومين السابقين هو عمل برنامج يقوم بالكشف على الـــ groups وعرض محتوياتها من أجهزة وعرض الـــ IP الخاص بكل جهاز وسأقوم بوضعه خلال يوم أو إثنين لم يريد بدء هذا المشوار مثلى.

وبالنسبة للأخ SUM دخولك فى هذا الموضوع يشرفنا ونشكر لك الوصلة التى عرضتها وسأقوم الآن بتحميل ما فيها ودراسته.

إلى اللقاء غداً إخوانى

#8

السلام عليكم

اخ ابراهيم

انت تستخدم المثال الموجود مع الـ component والذي يوجد في مجلد اسمه demo . هذا يطلب منك ما قلت .

عليك بانزال المثال من http://kcahcn.topcities.com/iphone.zip .

نزله وجرب . انا مجربه بين كمبيوترين في شبكة واحدة و في كمبيوترين ليسا على شبكة واحدة و الصوت واضح جدا .

في امان الله

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#9

إخوانى فى المنتدى

أعتذر عن تأخرى فى عرض المثال الذى كتبت عنه سابقاً والخاص بعض أسماء الأجهزة المتصلة بالشبكة ورقم الـــ IP الخاص بها وذلك لظروف صحية وإن شاء الله فور إستردادى قواى بإذن الله سأقوم بمتابعة وتكملة هذا الموضوع وأنا أرحب بأى ملاحظات أو تعديلات على هذا المثال لكى يستفاد كل منا من الآخرين. بعد تحميلكم الملف يرجى إعادة تغيير الإمتداد من ZIP إلى ACE

#10

السلام عليكم

سلامتك اخي العزيز . انتبه لصحتك .

(f) (f) (f)

بالنسبة للمثال حجمه 0b . الموقع لايسمح بوضع ملفات مرفقة , عليك بوضعه في صفحة شخصية او ...

تحياتي

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#11

السلام عليكم إخوانى فى المنتدى:

أعتذر عن تأخرى عليكم وذلك لظروف صحية ولكنى لم أكن أعرف أن المنتدى لا يسمح بإرفاق الملفات، وإليكم ما توصلت إليه فى الفترة السابقة.

الرجاء وضع المكونات التالية على الفورم، مع مراعاة إنشاء الأحداث المناسبة:

عدد 1 treeview

عدد 3 edit box

عدد 8 button

button1.caption = getgroup

button2.caption = exit

button3.caption = getselected computer IP

button4.caption = connect

button5.caption = disconnect server

button6.caption = senmessage

button7.caption = start talking

button8.caption = stop talking

عدد 1 client socket

عدد 1 server socket

عدد 1 nmudp

عدد 1 acmwaveout

عدد 1 acmwavein

عدد 6 label

Label1.caption= My IP Address

Label2.caption= ''

Label3.caption= packets

Label4.caption= speaker nums

Label6.caption= size

Label7.caption= error

هذا البرنامج يقوم بــ:

* معرفة إسماء الأجهزة الموجودة فى الــ Groups ورقم الــ IP

* عمل محادثة صوتية (لم تتم تجربته)

* إرسال رسائل من البرنامج إلى مثيله الموجود فى جهاز آخر فى الشبكة

وأعذرونى إذا وجدتم أى خطأ وذلك لأنى لم أتم المل به بعد ، وأرحب بأى ملاحظات أو تعديلات

بداية البرنامج

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls,winsock, ScktComp, NMUDP, ACMDialog,

ACMWaveIn, ACMWaveOut, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

TreeView1: TTreeView;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Button2: TButton;

Button3: TButton;

ClientSocket1: TClientSocket;

ServerSocket1: TServerSocket;

Label2: TLabel;

Button4: TButton;

Button5: TButton;

Button6: TButton;

ACMWaveOut1: TACMWaveOut;

ACMWaveIn1: TACMWaveIn;

NMUDP1: TNMUDP;

Label3: TLabel;

Label4: TLabel;

Label6: TLabel;

Label7: TLabel;

StartTalk: TButton;

StopTalking: TButton;

Edit3: TEdit;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

procedure ClientSocket1Connect(Sender: TObject;

Socket: TCustomWinSocket);

procedure ClientSocket1Connecting(Sender: TObject;

Socket: TCustomWinSocket);

procedure ClientSocket1Disconnect(Sender: TObject;

Socket: TCustomWinSocket);

procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;

ErrorEvent: TErrorEvent; var ErrorCode: Integer);

procedure TreeView1GetSelectedIndex(Sender: TObject; Node: TTreeNode);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Button4Click(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure ServerSocket1Accept(Sender: TObject;

Socket: TCustomWinSocket);

procedure StopTalkingClick(Sender: TObject);

procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;

FromIP: String; Port: Integer);

procedure ACMWaveIn1Data(data: Pointer; size: Integer);

procedure StartTalkClick(Sender: TObject);

procedure ServerSocket1GetSocket(Sender: TObject; Socket: Integer;

var ClientSocket: TServerClientWinSocket);

private

{ Private declarations }

public

{ Public declarations }

end;

TGSM610=packed record

wFormatTag: Word; { format type }

nChannels: Word; { number of channels (i.e. mono, stereo, etc.) }

nSamplesPerSec: DWORD; { sample rate }

nAvgBytesPerSec: DWORD; { for buffer estimation }

nBlockAlign: Word; { block size of data }

wBitsPerSample: Word; { number of bits per sample of mono data }

cbSize: Word; { the count in bytes of the size of }

wSamplesPerBlock:word;

end;

var

Form1: TForm1;

PlayPackets,ErrorPackets:integer;

formatp:pointer;

gsm610:TGSM610;

MySocket:Integer;

implementation

{$R *.dfm}

type

TNetResourceArray = ^TNetResource;

function IDgetUserIP(PcName:string):tstrings;

type

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

PaPInAddr = ^TaPInAddr;

var

phe: PHostEnt;

pptr: PaPInAddr;

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

I,vx: Integer;

GInitData: TWSAData;

begin

for vx := 0 to 63 do Buffer[vx]:=#0;

WSAStartup($101, GInitData);

Result := TstringList.Create;

Result.Clear;

GetHostName(Buffer, SizeOf(Buffer));

for vx := 1 to 64 do Buffer[vx-1]:=PcName[vx];

phe := GetHostByName(buffer);

if phe = nil then Exit;

pPtr := PaPInAddr(phe^.h_addr_list);

I := 0;

while pPtr^ <> nil do

begin

Result.Add(inet_ntoa(pptr^^));

Inc(I);

end;

WSACleanup;

end;

function GetUser(GroupName:string;UserNode:TTreeNode):boolean;

Var

NetResource:TNetResource;

Buf : Pointer;

Count,BufSize,Res : DWord;

Ind : Integer;

lphEnum : THandle;

Temp:TNetResourceArray;

user:PChar;

Begin

Result := False;

FillChar(NetResource, SizeOf(NetResource), 0);

//initialize newtwork resource information

NetResource.lpRemoteName := @GroupName[ 1];

//workgroup name

NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;

//type as a server (workgroup)

NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;

NetResource.dwScope := RESOURCETYPE_DISK;

//enumerate file resource inforamation

Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

If Res <> NO_ERROR Then

Exit; //function failed

While True Do

Begin

Count := $FFFFFFFF; //no restriction of resource count

BufSize := 8192;//size of buffer that receives the enumeration results 8K

GetMem(Buf, BufSize);//apply memory , used to get work group info and the computer name

Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

If Res = ERROR_NO_MORE_ITEMS Then

break;//resource enumerate finished

If (Res <> NO_ERROR) then

Exit; //function faild

Temp := TNetResourceArray(Buf);

For Ind := 0 to Count - 1 do

//enumerate computers in workgroup

Begin

strcopy(user,Temp^.lpRemoteName);

strcopy(user,user+2);

Form1.TreeView1.Items.AddChild(UserNode,user);

Inc(Temp);

End;

End;

Res := WNetCloseEnum(lphEnum);

If Res <> NO_ERROR Then exit;

Result:=True;

FreeMem(Buf);

end;

function GetGroup:boolean;

Var

NetResource : TNetResource;

Buf : Pointer;

Count,BufSize,Res : DWORD;

lphEnum : THandle;

p:TNetResourceArray;

i,j : SmallInt;

NetworkTypeList : TList;

MyTreeNode1,MyTreeNode2: TTreeNode;

Begin

with form1.TreeView1.Items do

begin

MyTreeNode1 := Add(nil, 'مجموعات العمل المتصلة');

end;

Result := False;

NetworkTypeList := TList.Create;

Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER, Nil,lphEnum);

//get entire network file resource handle

If Res <> NO_ERROR Then

exit; // failed

Count := $FFFFFFFF;

BufSize := 8192;

GetMem(Buf, BufSize);

Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

If ( Res = ERROR_NO_MORE_ITEMS ) or (Res <> NO_ERROR ) Then

Exit;

P := TNetResourceArray(Buf);

For I := 0 To Count - 1 Do

//record every network type information

Begin

NetworkTypeList.Add(p);

Inc(P);

End;

//WNetCloseEnum

Res:= WNetCloseEnum(lphEnum);

//close one enumerate handle

If Res <> NO_ERROR Then exit;

For J := 0 To NetworkTypeList.Count-1 Do

Begin

//list all workgroups in one network type

NetResource := TNetResource(NetworkTypeList.Items[J]^);

Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

//get the handle of a certain network type file resource

//NetResource -> the networktype , lpEnum ->returned handle

RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

If Res <> NO_ERROR Then

break;

While true Do

Begin

Count := $FFFFFFFF;

BufSize := 8192;

GetMem(Buf, BufSize);

Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

If ( Res = ERROR_NO_MORE_ITEMS ) or (Res <> NO_ERROR) then

break;

P := TNetResourceArray(Buf);

For I := 0 To Count - 1 Do

Begin

MyTreeNode2:=Form1.TreeView1.Items.Addchild(MyTreeNode1,StrPAS( P^.lpRemoteName ));

GetUser(P^.lpRemoteName ,MyTreeNode2);

Inc(P);

End;

End;

Res := WNetCloseEnum(lphEnum);

If Res <> NO_ERROR Then

break;

End;

Result := True;

FreeMem(Buf);

NetworkTypeList.Destroy;

End;

procedure TForm1.Button1Click(Sender: TObject);

begin

GetGroup;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

wsdata : TWSAData;

hostName : array [0..255] of char;

hostEnt : PHostEnt;

addr : PChar;

HostIP: String;

begin

WSAStartup ($0101, wsdata);

try

gethostname (hostName, sizeof (hostName));

hostEnt := gethostbyname (hostName);

if Assigned (hostEnt) then

if Assigned (hostEnt^.h_addr_list) then begin

addr := hostEnt^.h_addr_list^;

if Assigned (addr) then begin

HostIP := Format ('%d.%d.%d.%d', [byte (addr [0]),

byte (addr [1]), byte (addr [2]), byte (addr [3])]);

Edit1.text := HostIP;

end

else

Edit1.text := 'error getting self IP'

end

else

Edit1.text := 'error getting self IP'

else begin

MessageDlg(Format ('Winsock error %d', [WSAGetLastError]), mtError, [mbOk], 0);

Edit1.text := 'error getting self IP'

end;

finally

WSACleanup;

end;

NMUDP1.ReportLevel := Status_Basic;

PlayPackets:=0;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Edit2.Font.Color:=clRed;

Edit2.Text:='please wait...';

application.ProcessMessages;

edit2.text:=IDgetUserIP(treeview1.Selected.Text).DelimitedText;

//Edit2.Text:='D O N E';

Edit2.Font.Color:=clBlack;

end; // tstrings

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

Var ReTex:String;

xx:array[0..255]of char;

xxclear:integer;

begin

for xxclear :=0 to 255 do xx[xxclear]:=#0;

ReTex:=socket.ReceiveText;

if ReTex='IDProGetWin' Then Label2.Caption:=label2.Caption+' {Data Recieved}';

if ReTex='DisconnectMe' Then ClientSocket1.Active:=False ;

if ReTex[1]+ReTex[2]='IP' then begin

StrLCopy(xx,pchar(ReTex)+2,Length(ReTex)-2);

edit2.text:=string(xx);

ClientSocket1.Address:=string(xx);

end;

end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;

Socket: TCustomWinSocket);

begin

label2.Caption:='connected';

ClientSocket1.socket.SendText('IP'+Edit1.Text);

end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;

Socket: TCustomWinSocket);

begin

label2.Caption:='connecting';

Button4.Enabled:=False

end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

label2.Caption:='disconnected';

Button4.Enabled:=true;

end;

procedure TForm1.ClientSocket1Error(Sender: TObject;

Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

var ErrorCode: Integer);

begin

label2.Caption:='Error on connection';

Button4.Enabled:=true;

end;

procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject;

Node: TTreeNode);

begin

button3.Enabled:=true;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ClientSocket1.Active:=false;

ClientSocket1.Close;

ServerSocket1.Active:=false;

ServerSocket1.Close;

StopTalkingClick(Sender)

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

ClientSocket1.Active:=False;

ClientSocket1.Address:=edit2.text;

ClientSocket1.Active:=true;

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin

If (edit2.Text = '') or (edit2.Text = 'please wait...') then button4.Enabled:=false

else begin button4.Enabled:=true; StartTalk.Enabled:=true end

end;

procedure TForm1.Button5Click(Sender: TObject);

var a:integer;

begin

If ClientSocket1.Active= false then begin

clientSocket1.active:=true;

Sleep(500);

application.ProcessMessages;

clientSocket1.socket.SendText('DisconnectMe');

application.ProcessMessages;

Sleep(500);

clientSocket1.active:=False;

application.ProcessMessages;

Sleep(500);

{Serversocket1.Socket.Disconnect(MySocket);

Serversocket1.Active:=false;

Serversocket1.close; }

end

else ClientSocket1.Active:= false;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

ClientSocket1.socket.SendText('IDProGetWin');

end;

procedure TForm1.ServerSocket1Accept(Sender: TObject;

Socket: TCustomWinSocket);

begin

label2.Caption:='Accepted connection';

Button4.Enabled:=False

end;

procedure TForm1.StopTalkingClick(Sender: TObject);

begin

ACMWaveIn1.Close;

ACMWaveOut1.Close;

StartTalk.Enabled:=true;

StopTalking.Enabled:=false;

end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;

NumberBytes: Integer; FromIP: String; Port: Integer);

var

mdata:array[1..10000] of char;

data:Pchar;

begin

NMUDP1.ReadBuffer(mdata,NumberBytes);

data:=pchar(dword(@mdata));

label3.caption:='Packets:'+inttostr(PlayPackets);

inc(PlayPackets);

if NumberBytes=-1 then inc(ErrorPackets)

else ACMWaveOut1.PlayBack(data,NumberBytes);

label4.caption:='Errors:'+inttostr(ErrorPackets);

label7.caption:='Size:'+inttostr(NumberBytes);

end;

procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);

var

mdata:array[1..10000] of char;

k:integer;

begin

for k:=1 to size do mdata[k]:=pchar(dword(data)+dword(k-1))^;

NMUDP1.SendBuffer(mdata,size);

end;

procedure TForm1.StartTalkClick(Sender: TObject);

begin

NMUDP1.Remotehost:=Edit2.text;

ACMWaveIn1.Num:=strtoint(edit3.text);

edit3.text:=inttostr(ACMWaveIn1.Num);

with gsm610 do

begin

wFormatTag:=$31;

nChannels:=1;

wBitsPerSample:=0;

nSamplesPerSec:=8000;

nBlockAlign:=65;

nAvgBytesPerSec:=1625;

cbSize:=2;

wSamplesPerBlock:=$140;

end;

formatp:=@gsm610;

ACMWaveOut1.Open(formatp);

ACMWaveIn1.Open(formatp);

StartTalk.Enabled:=false;

StopTalking.Enabled:=true;

end;

procedure TForm1.ServerSocket1GetSocket(Sender: TObject; Socket: Integer;

var ClientSocket: TServerClientWinSocket);

begin

MySocket:=Socket;

end;

end.

#12

الحمدلله على السلامة اخوي براهيم

وماتشوف شر إن شاء الله

وإن شاء الله ترجع صحتك افضل من اول ;)

ومكشور ايضاً على هالكود وماقصرت

وبالمناسبة انا عندي كود لعملية استخدام كمرة الفيديو في الشبكات ( اي التخاطب عن طريق كمرة الفيديو كما في برنامج المحادثة Chat طبعاً ) طبعاً اذا كنتوا عايزين الطريقة فأبشراااااااااااا :)

وتقبل اطيب تحياتي اخوك SUM

#13

أخى SUM أشكر لك كلماتك الرقيقة ووفقنا الله لما فيه الخير ،

أخوك : إبراهيم دياب

#14

تعديل على الكود الموجود بأعلى:

إخوانى لقد نسيت أن أقول لكم أن تقوموا بضبط الـــ port الخاصة بــ clientsocket1,serversocket1 على رقم واحد وليكن 5 ، وأيضاً ضبط الــ Localport , Remoteport الخاصة بـــ NMUDP1 على 6660 وشكراً ، كما أشكر الأخ tmaa على الورود الجميلة المهداه

#15

السلام عليكم

إبراهيم_دياب5

اريد ان اسالك سؤال

قد عملت برنامج محادثه في شبكه وقد ساعدني الاخوان كثيرا

وقد طلبت كود يساعدني على معرفه اسم الجهاز كان البرنامج يعمل ويظهر لي اسم الجهاز

ولكن للاسف اذا كانت الشبكه كلاينت سيرفر فانه لايظهر اسم الجهاز ...يظهر اسم السيرفر:(

اذا كان عندك حل لهذه المشكله او عند احد الاخوان فارجوا المساعده

#16

أخى العزيز Lola

أرجوا منك زيارة yahoo.com وتكشف على Email بإسم:

ibrahimdiab0105632576

وكلمة المرور ibrahimdiab

ستجد رسالة بإسم " برامج الشبكات " إفتحها ثم إضغط على

Download attatchment

لعل الحل يكون فيها

#17

شكرا اخي يعطيك العافيه

#18

السلام عليكم

نرجو ممن يملك المثال المشار إليه سابقا إفادتنا به

وشكرا لكم

#19

ســـؤال ...هل بأمكاننا ...أن نربط أكثر من ClientSocket1:(:(:(

الى سيرفر واحد...مع ServerSocket1.....:'(

#20
اقتباس
ســـؤال ...هل بأمكاننا ...أن نربط أكثر من ClientSocket1

الى سيرفر واحد...مع ServerSocket1

.....

أكيد يمكنك هذا لكنك ستحتاج الى أستخدام Threads

فكل Client سيكون له Thread خاص به سيخدمه

خالد المصرى

#21

شكـرا لأهتمامك أخي خالد(f)(f)..........

لقد طرحت الموضوع من جديد ..وأرجـــــــو أن تفهم الغاية ...وتتدرسه

التخاطب بين الSERVER ... وال CLIENT......

والمشكلة المرة الاولى التي اتعامل بها مع الشبكات :mad::mad:

وماهي Threads التي ذكرتها مشكوراً(f)(f)

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

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