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

تحويل من ++c إلى java

بدأه Cs.Girl في 7 مارس 2011 · 0 رد · 385 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1

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

إخواني أخواتي ..

عندي كود برنامج بـ ++c

عبارة عن شاتينق أبلكيشن بإستخدام السوكيتس ..

الله يسسسسعدكم اتمنى تساعدوني في تحويله للجافا

لأنه مطلوب مني يالجافا وخبرتي فيها ضعيفة جداا :(

وهذا الكود

#include "chat_server.h"


Server Chat_Server;



UINT  ServerRecThread(LPVOID pParam)
{	
	SOCKET sRecSocket = (SOCKET)pParam;
	while(1)
	{
		if(Chat_Server.RecClient(sRecSocket))
			break;
	}
	return 0;
}



UINT  ServerListenThread(LPVOID pParam)
{	

	while(1)
		Chat_Server.StartListenClient();
	return 0;
}



Server::Server()
{
    cout << " \tServer\n";
	Chat_Server.connection_status = false;

    WSADATA wsaData;

    sockaddr_in local;

    int wsaret=WSAStartup(0x101,&wsaData);

    if(wsaret!=0)
    {
        return;
    }

    local.sin_family=AF_INET; 
    local.sin_addr.s_addr=INADDR_ANY; 
    local.sin_port=htons((u_short)8084); 

    m_SListenClient=socket(AF_INET,SOCK_STREAM,0);


    if(m_SListenClient==INVALID_SOCKET)
    {
        return;
    }


    if(bind(m_SListenClient,(sockaddr*)&local,sizeof(local))!=0)
    {
        return;
    }


    if(listen(m_SListenClient,10)!=0)
    {
        return;
    }

	Chat_Server.connection_status = true;
    return;
}

Server::~Server()
{
    closesocket(m_SListenClient);

    WSACleanup();
}

void Server::StartListenClient()
{

    sockaddr_in from;
    int fromlen=sizeof(from);

    m_SClient=accept(m_SListenClient,
         (struct sockaddr*)&from,&fromlen);

	if(m_SClient != INVALID_SOCKET)
		m_vClientList.push_back(m_SClient);

	AfxBeginThread(ServerRecThread,(void *)m_SClient);

}



int Server::SendMessagePort(string Message)
{
		int iStat = 0;
	 int No_Of_client;
		list<SOCKET>::iterator itl;
		 No_Of_client= m_vClientList.size();

		if(No_Of_client == 0)
			return 0;
		itl = m_vClientList.begin();

		while(itl != m_vClientList.end())//send message to all client
		{
			iStat = send(*itl,Message.c_str(),Message.size()+1,0);			
			if(iStat == -1)
				m_vClientList.remove(*itl);
			++itl;

		}

		if(iStat == -1)
			return 1;

		return 0;

}

int Server::RecClient(SOCKET sRecSocket)
{
    char Message[4096];
	int iStat;

  //cout <<inet_ntoa(local.sin_addr) <<":"<<temp<<"\r\n";
		iStat = recv(sRecSocket,Message,4096,0);
		if(iStat == -1)
		{
			m_vClientList.remove(sRecSocket);
			return 1;
		}
		else  
		{
			cout <<"-->\""<<Message<<"\"\n";
			SendMessagePort(Message);
			return 0;
		}
	return 0;

}




int main(int argc, char* argv[])
{
    int nRetCode = 0;
	char buf[4096];

    cout << "|------------------------------------------|\n";
	cout << "|A simple chat application based on sockets\n";
    cout << "|Press ONLY ENTER to quit.\n";
	cout << "|------------------------------------------|\n";

	if(!Chat_Server.connection_status)//check "connection status" 
	{
		cout<<"\nFailed to initialise server socket";
		getch();
		return 1;
	}
	AfxBeginThread(ServerListenThread,0);


	while(gets(buf))
	{
		if(strlen(buf) == 0)
			break;
		if(Chat_Server.SendMessagePort(buf))//return 1 if can not send
		{
			cout<<"Problem in connecting to server. Check whether server is running\n";
			break;
		}
	}

	cout<<"This is clieant signing off."; 
	getch();

    return nRetCode;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "chat_client.h"

//Global Message object
Client Chat_Client;


Client::Client()
{   cout<<"\tClient\n";
	Chat_Client.connection_status = false;
}

void Client::Init(string sIpAddress, int iPort)
{

	m_sServerIPAddress = sIpAddress;
	m_iServerPort = iPort;
	struct hostent *hp;
	unsigned int addr;
	struct sockaddr_in server;


	WSADATA wsaData;

	int wsaret=WSAStartup(0x101,&wsaData);


	if(wsaret!=0)
	{
		return;
	}

	soc=socket(AF_INET,SOCK_STREAM,0);
	if(soc==INVALID_SOCKET)
		return;

	addr=inet_addr("127.0.0.1");
	hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);

	if(hp==NULL)
	{
		closesocket(soc);
		return;
	}

	server.sin_addr.s_addr=*((unsigned long*)hp->h_addr);
	server.sin_family=AF_INET;
	server.sin_port=htons(m_iServerPort);
	/*if(connect(soc,(struct sockaddr*)&server,sizeof(server)))
	{
		closesocket(soc);
		return;	
	}
	*/
	int bb=SOCKET_ERROR;
	while(bb == SOCKET_ERROR)
	{
		bb=connect(soc,(struct sockaddr*)&server,sizeof(server));//this will connect our socket soc with the specifications above
														// When there is no connection the return is SOCKET_ERROR
	}
	Chat_Client.connection_status = true;

	return;
}

Client::~Client()
{
	if(connection_status)
		closesocket(soc);
}

int Client::SendMessagePort(string sMessage)
{
		int iStat = 0;

		iStat = send(soc,sMessage.c_str(),sMessage.size()+1,0);
		if(iStat == -1)
			return 1;

		return 0;

}

int Client::RecMessagePort()
{

		char acRetData[4096];
		int iStat = 0;

		iStat = recv(soc,acRetData,4096,0);
		if(iStat == -1)
			return 1;
		cout<<":\""<<acRetData<<"\"\n";

		return 0;

}



UINT  MessageRecThread(LPVOID pParam)
{	
	while(1)
	{
		if(Chat_Client.RecMessagePort())
			break;
	}
	return 0;
}



int main(int argc, char* argv[])
{
	char buf[4096];

    cout << "|-----------------------------------------|\n";
	cout << "|A simple chat application based on sockets.\n";
    cout << "|Press ONLY ENTER to quit.\n";
	cout << "|-----------------------------------------|\n";

/*	FILE *fp = fopen("server.ini","r");
	if(fp == NULL)
	{
		cout<<"\nUnable to open server.ini. Please specify server IPsddress in server.ini";
		return 1; // main failed
	}
	string sServerAddress;
	while((fgets(buf,4096,fp)) != NULL)
	{
		if(buf[0] == '#')
			continue;
		sServerAddress = buf;

	}
	fclose(fp);

	if(sServerAddress.size() == 0)
	{
		cout<<"\nUnable to find server IPaddress in server.ini";
		cout<<"\nPlease set server IPaddress";
		getch();
		return 0;
	}
	*/
	Chat_Client.Init("127.0.0.1",8084);
	if(!Chat_Client.connection_status)  //check "connection status" 
	{
		cout<<"\nUnable to connect to the IPaddress specified in server.ini";
		cout<<"\nPlease check server IPaddress";
		getch();
		return 0;	
	}

	AfxBeginThread(MessageRecThread,0);
	while(gets(buf))
	{
		if(strlen(buf) == 0)
			break;
		if(Chat_Client.SendMessagePort(buf))//if can not sen message
		{
			cout<<"Problem in connecting to server. Check whether server is running\n";
			break;
		}
	}

	cout<<"\nThis is server Signing off. BYE:";
	getch();
	return 0;
}

بإنتظاااركم ..

تم تعديل هذه المشاركة بواسطة Cs.Girl في 7 مارس 2011 في 22:06

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