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

كم سؤال عن Sockets في C++

بدأه CPP-Programmer في 1 نوفمبر 2008 · 18 رد · 1,743 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

شباب لو سمحتم بدي تطبيق عن Sockets في السي++ // اريد تطبيق يتكون من : client + server

server : اللى يفتح البورت علي جهازك مثلا او يعمل تصنت تقريباً له

client : اللى يعمل عملية connect عن طريق هذا البورت

وياليت كمان شرح لدالة gethostbyname في sockets لاني احتاجها ضروري ومع الحجات اللى لازم اعملها include <FILE> لو سمحتهم

وشكراً لكم مقدما :)

منتظركم

Just C++ Life :)

#2

يوجد بالقسم مشروع مماثل للأخ محمد عبد العزيز والأخ djug ستجد به شئ كالذي تريده .

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

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#4

آخر شيء ونسيت ارفآقه ..

درس كآمل للسوكت بالانجليزي

المرفق

C___NET.rar

#5
/index.ph...st&p=892113
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#6

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

السلام عليكم

GamingMasteR والله بحثت حتي دخت :( ما فيه الشئ اللى اريده فقط وكله ملخبط

redfalcon464 تسلم حبيبي لكن ما بديش برنامج اختراق بدي بس برنامح بسيط مافيه الا بس انه يعمل connect لجهاز معين ، وبرنامج اخر يكون هو السيرفر يتصنت عالبورت

time1 جزاك الله خيراً شوف حبيبي

انا ما بديش الا برنامجين فقط

1) يعمل اتصال بالبورت معين وليكن 2222 علي اي بي معين تم اختياره !

2) يعمل تصنت او يكون Server

منتظركم يا شباب بس والله دووختم بي

:D

Just C++ Life :)

#7
اقتباس
time1 جزاك الله خيراً شوف حبيبي

انا ما بديش الا برنامجين فقط

1) يعمل اتصال بالبورت معين وليكن 2222 علي اي بي معين تم اختياره !

2) يعمل تصنت او يكون Server

والبرامج التي كتبتها في المشاركة التي اعطيتك رابطها سابقا هل تختلف عما تريد؟ :huh:

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#8

السلام عليكم

time1

لم افهم كودك عذراً اريد فقط كود هكذا مثلا

#include<xxxx>

void main(){

X2

a.connect(ip,port);

}

xxx = الملف الذى به الوينسوك واعتقد انه winsock.h كما هو مكتوب

X2 = الطريقة التي يتم عمل بها variable به winsock

يعني اريد بعدها لما اكتب اسم الفاريابل ثم نقطة مثلا هكذا : va. يظهر قائمة بها خيارات الوينسوك والكونكت

عذراً

شكرا

Just C++ Life :)

#9

منتظرك!

Just C++ Life :)

#10

اهلا اخي . ..

لا اعتقد بأنه يوجد اي شئ غير واضح في الكود + يوجد تعليق حول كل خطوة قمنا بها , ماهي ومالغرض منها .

بالاضافة إلى ان الكود تماما مثل الشكل الذي قمت بطلبه ,وبالطريقة ذاتها .

جرب ذلك اخي واكتشفه بنفسك .

تحياتي . . .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#11

اهلا حبيبي

#include <winsock.h>
#pragma comment( lib,"ws2_32.lib" )

int main()
{
	// Initiate use of the WinSock DLL.

	WSADATA wsaData = { 0 };
	WSAStartup( MAKEWORD( 2, 2 ), &wsaData );

	// Create a Socket and store the handle to it.
	SOCKET hSocket = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );

	// Set the protocol, port, and address information of the server.
	sockaddr_in serverAddr = { 0 };
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons( 2345 );
	serverAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" );

	// Send a message to the server
	char buffer[] = "hello";
	sendto( hSocket, buffer, sizeof( buffer ) + 1, 0, reinterpret_cast<sockaddr *>( &serverAddr ), sizeof( serverAddr ) );

	// Cleanup.
	WSACleanup();

	return 0;
}

اخي هل هذا هو كود لأتصال بجهاز معين ويعمل كونكشن معه ؟؟

لانى شغلته وماظهر شئ ؟

اخي شوف

انا فهمت انه انت سويت سوكيت وسميته hSocket

طيب انا الان اريد بنفس البرنامج اكتب مثلا

hSocket.Listen();

او Close();

ويشتغل ! هذا بس اللى اريده

اخوي لو سمحت

الله يكرمك

الله يخليك

لو سمحت

عشان انا لسه جديد

الله يكرمك

ما بديش الا بس اللى اريده

عمل connect

وبس

Just C++ Life :)

#12

نــــــــــــــــــعععم الإن فهـــمت قصدي + قصدك :D

ايوة تمام انا فهمت انه انت عملت الhSocket علي اساس انه السوكيت وهكذا !! لكن شوف يا اخي

مثلا لو عاوز اشغل دالة Listen المفروض انه انا اكتب هكذا !!!

hSocket.Listen();

ولكن المفروض بكودك المفروض نكتب علطول Listen(); بدون الhSocket.

ولكنني اريد ان اعملها hSocket. لانه انا مش عارف كل الدوال بتاعت السويكتس كلها !!

فإريد لما اكتب hSocket. يظهر لستة كبيرة بها جميع الدوال تبعت الsockets

طيب .............. بكودك انا جربت اعمل هكذا وما نفع :(

تسلم حبيبي

الان فهمت انه يعني لما احب استخدم دالة بكتب علطول الدالة علطول مثلا Listen(); لكن انا اريد ان اكتب hSocket. ويظهر اللستة الكاملة لانه انا مش عارف الفنكشنز

تسلم :)

Just C++ Life :)

#13

لانه كمان دالة Create التي تعمل "انتظار"او Listening عشان بعدها ابقي اتصل بجهازي من اى جهاز اخر او يعني تكون دالة create هو الدالة اللى تعمل ليسننج ،، للأسف ما تشتغل !! او اعتقد ان اسم الدالة Listen() يعني تعمل Create(port); ثم listen(); الدالة ما تشتغل create ! او اعتقد اني ما اعرف اسمها

لذلك لازم الحكاية اللى قلت عليها فوق عشان تطلع اللستة

Just C++ Life :)

#14

مرحبا ..

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

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

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

بعدها نفذ السيرفر , ستجد ان البرنامج لايخرج اي نتائج ,فقط ينتظر وصول اي رسالة من الكلاينت .

بعدها نفذ الكلاينت , والذي بدوره سيقوم بارسال الرسالة "hello" للسيرفر ,وينتهي البرنامج

ارجع الان لبرنامج السيرفر ستجد ان الرسالة التي قام الكلاينت او العميل بارسالها قد وصلت إليه وتمت طباعتها .

, ليس بالضرورة جميع كائنات الملف winsock تحتوي على قائمة بالاعضاء , نحن نتعامل مع مانحتاجه فقط , وهي القائمة الموجودة بالمتغير serverAddr في كلا البرنامجين .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#15

لو سمحت شوف المشاركة اللى تحت

* تم مسح هذه المشاركة لحل مشكلة هذه المشاركة بحمدالله

تم تعديل هذه المشاركة بواسطة CPP-Programmer في 7 نوفمبر 2008 في 20:59

Just C++ Life :)

#16

جيد خلاص اخي انسي كل ما فات خلاص الحمدلله شغلت server ثم client وارسل الhello بجيد

السؤال الإخير والوحيد ان شاء الله : هل تم التصنت علي بورت 2345 كما كان محطوط في بروجكت "السيرفر"؟

	serverAddr.sin_port = htons( 2345 );

؟؟

و هل من قائمة بها دوال Sockets ??

وشكراً

هذا فقط وشكراً لله ثم لك يا time1

تم تعديل هذه المشاركة بواسطة CPP-Programmer في 7 نوفمبر 2008 في 20:59

Just C++ Life :)

#17

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

لحسن الحظ قد شاهدت ردك قبل التعديل :wink:

وبالنسبة لسؤالك فالسيرفر الان يقوم بانتظار الرسائل التي تأتي على البورت 2345 ليقوم بعرضها ,جرب تغيير الرسالة Hello لاي رسالة اخرى وجرب تنفيذ البرامج , ستلاحظ بأن السيرفر سيقوم بطباعة الطلبات الواردة من العميل على البروت 2345 .

بالنسبة للدوال الموجودة داخل الملف winsock.h تستطيع مشاهدتها من خلال هذا الرابط .

http://doc.ddart.net/msdn/header/include/winsock.h.html

طبعا انت لن تستخدمها جميعا , ستستخدم ماتحتاجه منها , تستطيع تحديد الدوال التي تحتاجها من خلال متابعة ماتبحث عنه في هذا الرابط

http://msdn.microsoft.com/en-us/library/ms740632(VS.85).aspx

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

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#18

اخي time1 جزاك الله خيراً يا عزيزي ..

لقد شاهدت في احد المنتديات الاجنبية موضوع عن الSockets في السي++ عن طريق البحث في Google

ووجدت طريقة اسهل تفعل ما اريد (تُكون السوكيت في سطر واحد + عندما اكتب اسم السوكيت ثم اضع بعدها نقطة يظهر قائمة بها جميع الدوال وهذا ما اريده)

الكود للفائدة :

CAsyncSocket socket;

الان صار عندك سوكيت بعنوان "socket"اذا وضعت بعده نقطة ستظهر جميع القائمة

جزاك الله خيراً اخي time1 علي فائدتنا

ملحوظة : لم اجرب إي كود بالطريقة التي بالأعلي اللى بالسطر الوحيد ولكن ان شاء الله سأجربها عندما اعود الى المنزل لآني الان مش في المنزل

جزاك الله خيراً مرة اخري

Just C++ Life :)

#19

اهلا بك يا غالي

اخبرتك عزيزي بأن الموضوع متشعب وله طرق كثيرة تختلف في الافضلية , على كل حال تمتع بدراسة هذا العلم واتمنى لك التوفيق

ولاتنسى تزويد القسم فيما تعلمت .. :blush:

وفقت خيرا اخي الكريم .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

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