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

ترى والله مليت...ماحد راضي يرد علي !(((إلى كل الأعضاء والمشرفين والعالم كلها)))

مغلق
بدأه n3rd في 13 أكتوبر 2006 · 14 رد · 1,253 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الصلاة والسلام على أشرف الأنباء والمرسلين سيدنا محمد وعلى آله وصحبه أجمعين أما بعد...

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

ياشباب أنا حاليا قاعد أتعلم برمجة الشبكات...وقسم بالله أني أجتهد وأحاول وأتعلم والدليل أسئلتي الموجودة بالقسم...

عالعموم أنا ما راح اطول عليكم...

...

المشكلة:

موضوع الدرس اللي كنت أقراه هو...Beginning Winsock Programming - Simple TCP server...

وهذا هو الرابط... http://www.codeproject.com/internet/winsockintro01.asp

الحين أنا عملت الكود زي كذا...((وإن كان في خطأ قولوا لي)):

// Server1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Server1.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CWinApp theApp;
using namespace std;


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;	

	cout << "Press ESCAPE to terminate program\r\n";
	AfxBeginThread(ServerThread,0);
	while(_getch()!=27);

	return nRetCode;
}
UINT  ServerThread(LPVOID pParam)
{	
	cout << "Starting up TCP server\r\n";

	//A SOCKET is simply a typedef for an unsigned int.
	//In Unix, socket handles were just about same as file 
	//handles which were again unsigned ints.
	//Since this cannot be entirely true under Windows
	//a new data type called SOCKET was defined.
	SOCKET server;

	//WSADATA is a struct that is filled up by the call 
	//to WSAStartup
	WSADATA wsaData;

	//The sockaddr_in specifies the address of the socket
	//for TCP/IP sockets. Other protocols use similar structures.
	sockaddr_in local;

	//WSAStartup initializes the program for calling WinSock.
	//The first parameter specifies the highest version of the 
	//WinSock specification, the program is allowed to use.
	int wsaret=WSAStartup(0x101,&wsaData);

	//WSAStartup returns zero on success.
	//If it fails we exit.
	if(wsaret!=0)
	{
		return 0;
	}

	//Now we populate the sockaddr_in structure
	local.sin_family=AF_INET; //Address family
	local.sin_addr.s_addr=INADDR_ANY; //Wild card IP address
	local.sin_port=htons((u_short)20248); //port to use

	//the socket function creates our SOCKET
	server=socket(AF_INET,SOCK_STREAM,0);

	//If the socket() function fails we exit
	if(server==INVALID_SOCKET)
	{
		return 0;
	}

	//bind links the socket we just created with the sockaddr_in 
	//structure. Basically it connects the socket with 
	//the local address and a specified port.
	//If it returns non-zero quit, as this indicates error
	if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
	{
		return 0;
	}

	//listen instructs the socket to listen for incoming 
	//connections from clients. The second arg is the backlog
	if(listen(server,10)!=0)
	{
		return 0;
	}

	//we will need variables to hold the client socket.
	//thus we declare them here.
	SOCKET client;
	sockaddr_in from;
	int fromlen=sizeof(from);

	while(true)//we are looping endlessly
	{
		char temp[512];

		//accept() will accept an incoming
		//client connection
		client=accept(server,
			(struct sockaddr*)&from,&fromlen);

		sprintf(temp,"Your IP is %s\r\n",inet_ntoa(from.sin_addr));

		//we simply send this string to the client
		send(client,temp,strlen(temp),0);
		cout << "Connection from " << inet_ntoa(from.sin_addr) <<"\r\n";

		//close the client socket
		closesocket(client);

	}

	//closesocket() closes the socket and releases the socket descriptor
	closesocket(server);

	//originally this function probably had some use
	//currently this is just for backward compatibility
	//but it is safer to call it as I still believe some
	//implementations use this to terminate use of WS2_32.DLL 
	WSACleanup();

	return 0;
}

وطلعلي الخطأين هذه...

--------------------Configuration: Server1 - Win32 Debug--------------------
Compiling...
Server1.cpp
C:\Documents and Settings\The_Sniper\Desktop\C++\1\Server1\Server1.cpp(21) : error C2065: 'ServerThread' : undeclared identifier
C:\Documents and Settings\The_Sniper\Desktop\C++\1\Server1\Server1.cpp(27) : error C2373: 'ServerThread' : redefinition; different type modifiers
Error executing cl.exe.

Server1.exe - 2 error(s), 0 warning(s)

أرجوا إيجاد الحل...العاجل...لإنه إلى الآن لم أستطع تنفيذ البرنامج هذا...

#2

مكبر المسألة ليه؟؟؟

راجع أساسيات السي والسي ++ أولاً ...

رسالة الخطأ غير مفهومة؟؟

عليك كتابة تصريح الدالة ServerThread قبل دالة _tmain ... فأنت تستدعي الدالة ServerThread قبل أن تصرح بها ...

معظم أسئلتك توحي بأن الأساسيات لديك ليست كافية ... بإعتبار أن رسالة الخطأ غير مفهومة فبحث بسيط في google عن رسالة الخطأ سيعطيك الحل ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#3

انت كتبت الكود هذا ولا نقلته ؟

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

C For Dummies

C++ For Dummies

C# 2005 For Dummies

واى كتاب برمجة تبغاه بتلاقيه هنا ENTER

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

وبالتوفيق اخوى ..

#4

مشكورين أخواني والله على ردودكم اللي قلص المشكلة...ولكن ظهر لي خطأ الآن...

--------------------Configuration: Server - Win32 Debug--------------------

Compiling...

StdAfx.cpp

c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

Error executing cl.exe.

Server.exe - 1 error(s), 0 warning(s)

#5

اخي العزيز, واضح انك تحاول عمل شيء اكبر من قدراتك و ليس عندك ادنى الاسياسيات المطلوبة لانجاز المهمة.

لنفرض انك وجدت من يساعدك في حل هذا الخطأ.

صدقني سوف تمر بعده مباشرة بخطأ آخر .. و سوف تظل تصطدم بسلسلة طويلة من الاخطاء و لن تعرف كيف تتعامل مع اي منها.

#6

مشكور أخوي حسن على ردك...

ولكن أنا الآن من ناحية الأسئلة تقدمت كثير...وسار في تقدم...وماشي يخطى ثابتة ولكن توجد بعض العقبات

اللي أنا أتمنى منك إنكم تحلونها لي وذلك لخبرتكم الطويلة في المجال...هذا...

أما من ناحية الأساسيات...

الحمدلله...أنا أفهم في الفئات...والمؤشرات والمراجع والتوارث....وقريت يمكن 60 صفحة من كتاب الإكسير...

ووصلت إلى الساعة 18 في كتاب تعلم السي++ في 24 ساعة....لكن هذه الكتب مافيها مثال حيوي بمعنى إنه يعلمني

كيف أعمل كلاينت وسيرفر أو برنامج ماسح بورتات...

أرجوا إنكم تلاقولي حل...

وتتجاوبون معاي...لإنه خطوة الألف ميل تبدأ بخطوة...وبعدين إنتم أهل الخبرة...وأنا قاعد أتعلم هالحين...

أرجوا إيجاد حل للخطأ اللي معاي...

تحيتي لكم,,,

#7
اقتباس
كيف أعمل كلاينت وسيرفر أو برنامج ماسح بورتات...

أرجوا إنكم تلاقولي حل...

وتتجاوبون معاي...لإنه خطوة الألف ميل تبدأ بخطوة...وبعدين إنتم أهل الخبرة...وأنا قاعد أتعلم هالحين...

شيل من دماغك انك تقرأ كتاب في البرمجة ثم تقفز فورا لعمل برنامج كلاينت سرفر. العملية ليست بتلك البساطة. رحلة الالف تبدأ بخطوة, نعم بخطوة .. خطوة صغيرة, و ليس بقفزة طولها 100 متر.

في مرحلتك الان حاول تطبيق ما تعلمته على اشياء بسيطة.

#8

كما قال الأخ حسن أنت قفرت كم درجة في السلم وممكن تسقط في أي وقت ...

ضع الـ Project الذي عملته لهذا المثال على شكل ملف rar أو zip وارفقه في مشاركتك القادمة ..

اقتباس
الحمدلله...أنا أفهم في الفئات...والمؤشرات والمراجع والتوارث....وقريت يمكن 60 صفحة من كتاب الإكسير...

ووصلت إلى الساعة 18 في كتاب تعلم السي++ في 24 ساعة....لكن هذه الكتب مافيها مثال حيوي بمعنى إنه يعلمني

كيف أعمل كلاينت وسيرفر أو برنامج ماسح بورتات...

أول خطأ كان من الأساسيات فكيف لم تستطع معرفة سببه؟؟ يبدو أنك لا تستطيع تحليل رسائل الخطأ الناتجة ...

كتابين ليست كافية ...

كما أن طريقة تفكيرك خاطئة تريد كتاب يعلمك عمل كلاينت وسيرفر أو برنامج ماسح بورتات وليست لديك الأساسيات في برمجة الشبكات ..

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#9

كلامك صحيح...وعين الصواب...ولكن أنا أتعلم بالأمثلة...

أما الأخ...cipher...

هذا هو صفحة المشروع...

http://www.codeproject.com/internet/winsockintro01.asp...

والله أنا عارف إني ثقلت عليكم...لكن أنا من الناس اللي تتعلم بالأمثلة...

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

تحيتي لك...وإن شاء الله أستفيد منكم وأفيدكم بعدين...أرجوا رجاء كبير...إنكم تتقبلوا أسئلتي بصدر رحب...

وتقوموا أخطائي...

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

ومين قال؟؟؟

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

وأعرف إنه السوكيت لو نوعين...

SOCK_STREAM...و...SOCK_DGRAM

وأعرف أفرق بين الـ TCP والـ UDP...

وأعرف الكثير الكثير في عالم الشبكات...

ولكن أنا أتمنى طلب واحد بس...إنكم تتجابوا معي إذا سئلت ...<< وراح أدعليكم في صلاة التهجد... ;) وعد مني...

تحيتي لكم...

#10

كل الناس تتعلم بالأمثلة .. و لكن ابدأ بالامثلة البسيطة.

مو مسألة تثقيل علينا .. بس انت فعلا تضر نفسك بهذه الطريقة.

#11

شكلنا خرجنا عن الموضوع...

أسئلي...

راح تفيدين وتفيد غيري...

تحيتي لكم...

#12
اقتباس
كل الناس تتعلم بالأمثلة .. و لكن ابدأ بالامثلة البسيطة.

كلامك صحيح...ولكن اقرأ عنوان المقالة...

اقتباس
Beginning Winsock Programming - Simple TCP server

الكلمة Beginning...على ماذا تدل؟؟

الكلمة...Simple...على ماذا تدل؟؟؟

أنا ماطلبت معجزة...عندي خطأ قولوا لي مكانه...بس...

أنا ماعندي مشكلة...ننسى الموضوع هذا...وأنزل موضوع ثاني وبهداوة...تردون علي...

#13
.C:\Documents and Settings\The_Sniper\Desktop\C++\1\Server1\Server1.cpp(21) : error C2065: 'ServerThread' : undeclared identifier

بالضبط مثل ما الرسالة تقول .. ServerThread غير معرفة ..

و المثال يقول

Beginning Winsock Programming - Simple TCP server

يعني بدابة برمجة الشبكات .. و ليس بداية البرمجة.

#14

ياسيدي الفاضل رسالة الخطأ تقول :

Compiling...
StdAfx.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
Error executing cl.exe.

Server.exe - 1 error(s), 0 warning(s)

ال MFC تقوم بتضمين ملف الرأس windows.h بنفسها , فهي موجودة داخل ملفات رأس MFC , فلا تحتاج لتضمينه من جديد ,

يجب حذف ملف الرأس windows.h من الكود ,

غالبا ماتجده مضمن

#include <windows.h>

في ملف الرأس server.h , قم بحذفه وسيزول الخطأ ,,,

وإن لم تجده في server.h إبحث عن مكان إضافته وإحذفه بنفسك ,,

---------

المشكلة ليست في تعلم السي هنا , المشكلة في اللغة الإنجليزية !! فالكلام واضح ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#15

تسلم أخوي HGB وأخوي حسن << أنا عارف إني زعلتك بس إن شاء الله تسامحوني...

ولكل الأعضاء اللي شاركوا معاي...والحمدلله برمجة الشبكات سارت أسهل شي في العالم...

والحمدلله إستفدت أشياء كثيرة غير برمجة الشبكات....وهي كيف أصحح أخطائي بنفسي...لا وأزيدكم من الشعر بيت

قبل أمس طلعتلي 9 أخطاء وعرفت أسبابها كلها و وترجمت البرتامج واشتغل معاي آخر حلاوة ولله الحمد...

وجزاااااااااكم الله ألف ألف ألف ألف ألف ألف ألف ألف خير...

وبارك الله فيكم...

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…