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

مهم جدا .. لأعضاء المنتدى الكرام.

مغلق
بدأه المتيم2007 في 22 مارس 2007 · 0 رد · 331 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1

يا جماعة الخير مطلوب مني عمل برنامج Client/Server يعمل عملية محادثة على السي بلس بلس6 ... البرنامج انا عملته وكل اشي تمام ولكن الطلب الاضافي للبرنامج هو كيف بامكاني اني اسوي البرنامج بحيث يعمل اكثر من مرة ارسال بالنسبة للـ Client أو للـ Server يعني هلا انا برنامجي بيرسل مرة وبيستقبل مرة لكل واحد فيهم ... كيف بإمكاني اني اسويهم واعدل عليهم بحيث يبعث اكثر من مرة دون تقييد... والبرنامج الي انا كتبته .....

/* Client.cpp .. */
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"wsock32.lib")

#define IP "127.0.0.1"
#define PORT 2000

int main(void)
{
	int Error;

	puts("<[ Client ]>\n\n");
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);

	SOCKET Sock = socket(AF_INET, SOCK_STREAM, 0);
	if( Sock != INVALID_SOCKET )
	{
		printf(":-) Socket %d Is New Opened In TCP/IP Mode.\n",Sock);

		SOCKADDR_IN sin;
		sin.sin_addr.s_addr = inet_addr(IP);
		sin.sin_family	  = AF_INET;
		sin.sin_port		= htons(PORT);

		Error = connect(Sock, (SOCKADDR *)&sin, sizeof sin);
		if( Error != SOCKET_ERROR )
		{
			char bufferSend[50];
			char bufferRecv[50];
			int go = 1;

			printf(":-) Connected to server...\n\n");
			do
			{
				printf("<<<< CLIENT SAID: ");
				fgets(bufferSend, sizeof bufferSend, stdin);
				Error = send(Sock, bufferSend, strlen(bufferSend), 0);
				if(Error == SOCKET_ERROR)   go = 0;

				Error = recv(Sock, bufferRecv, sizeof(bufferRecv)-1, 0);
				if(Error == SOCKET_ERROR)   go = 0;
				else
				{
					bufferRecv[Error] = '';
					printf(">>>> SERVER SAID: %s\n",bufferRecv);
				}
			}
			while (go);

			printf("::::: Send Imposible, Closing Socket...\n");
			closesocket(Sock);
			printf("::::: Socket %d Is New Closed.\n",Sock);
		}
		else
		{
			printf(":-/ Not Connected ! Connection Failure.\n");
			return EXIT_FAILURE;
		}
	}
	else
	{
		printf(":-/ Invalid Socket. Socket Is Not Opened.\n");
		return EXIT_FAILURE;
	}

	WSACleanup();
	system("pause");
	return EXIT_SUCCESS;
}



/* Server.cpp .. */
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"wsock32.lib")

#define PORT 2000

int main(void)
{
	char Buffer_Recv[50];
	int Error;

	printf("<[ Server ]>\n\n");

	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);

	SOCKADDR_IN sin={0};
	SOCKET Sock=socket(AF_INET, SOCK_STREAM, 0);

	if(Sock!=INVALID_SOCKET)
	{
		printf(":-) Socket %d is now opened in TCP/IP mode.\n",Sock);

		sin.sin_addr.s_addr = htonl(INADDR_ANY);
		sin.sin_family	  = AF_INET;
		sin.sin_port		= htons(PORT);

		Error = bind(Sock, (SOCKADDR *)&sin, sizeof(sin));
		if( Error != SOCKET_ERROR )
		{
			Error = listen(Sock, 2);
			if( Error != SOCKET_ERROR )
			{
				printf(":-) listening on port %d\nWaiting for a client connection on this port...\n",PORT);

				SOCKADDR_IN Csin = {0};
				int Size_Of_Csin = sizeof(Csin);
				SOCKET Csock = accept(Sock, (SOCKADDR *)&Csin, &Size_Of_Csin);
				if( Csock != INVALID_SOCKET )
				{
					printf("::::: Client Connected\n\n");

					int go = 1;
					while(go)
					{
						Error = recv(Csock, Buffer_Recv, sizeof(Buffer_Recv)-1, 0);
						if(Error != SOCKET_ERROR)
						{
							Buffer_Recv[Error] = '';
							printf(">>>> CLIENT SAID: %s\n",Buffer_Recv);
						}
						else
						{
							printf(":-/ Socket Error, Recv !\n");
							go = 0;
						}

						char bufferSend[50];
						printf("<<<< SERVER SAID: ");
						fgets(bufferSend, sizeof(bufferSend), stdin);
						Error = send(Csock, bufferSend, strlen(bufferSend), 0);

						if(Error == SOCKET_ERROR)
						{
							printf(":-/ Socket Error, Send !\n");
							go = 0;
						}
					}

					shutdown(Csock, 2);
					closesocket(Csock);
					printf("::::: Client Socket %d Is Now Closed.\n",Csock);
				}
				else
				{
					printf(":-/ Invalide Socket, Error In Opening Client Socket\n");
					system("pause");
					return EXIT_FAILURE;
				}
			}
		}
		closesocket(Sock);
		printf(":::: Server socket %d is now closed.\n",Sock);
	}
	else
	{
		printf(":-/ Invalide Socket, Error In Opening Server Socket\n");
		system("pause");
		return EXIT_FAILURE;
	}

	WSACleanup();
	system("pause");
	return EXIT_SUCCESS;
}

كما انني ارفقت الملفات للبرامج ... ومع العلم انه البرنامج عندي شغال 100% ومن دون اي مشاكل .....

وارجو التكرم من الاعضاء الكرام مساعدتي العاجلة .... شاكراً لكم حسن تعاونكم معي ....

....

...

...

اخوكم المتيم2007

PROG.rar

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

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