IT Security Team  
قدیمی 11-13-2010, 12:58 PM   #1
مديريت بخش
 
am!rkh@n آواتار ها
 
تاریخ عضویت: Feb 2010
محل سکونت: home/
نوشته ها: 146
Thanks: 117
Thanked 197 Times in 92 Posts
پیش فرض Socket Programming in C++

حتما وقتی که می خواسته اید در C++ با سوکت ها کار کنید با کتابخانه ها و دستوراتی برخورد کردید که فقط در لینوکس کار می کنند. اگر می خواهید در ویندوز از سوکت استفاده کنید باید کمی بیشتر کد بنویسید و از کتابخانه های ویندوزی استفاده کنید.
کد زیر برای سمت کلاینت در ویندوز نوشته شده است. با بررسی اختلافها با کد لینوکسی می توانید کد سمت سرور را نیز براحتی بنویسید.

کد:
#include <winsock.h>
#include <sys/types.h>
#include <unistd.h>
#include <windows.h>

void sError(char*);

int main()
{
    WORD version;
	WSADATA wsaData;
	int rVal=0;
	int portNo = 1234;
	version = MAKEWORD(1,1);
	WSAStartup(version,(LPWSADATA)&wsaData);
	LPHOSTENT hostEntry;
	char *buf = "Message to be send";
	
	//SOCKET
    //store information about the server
	hostEntry = gethostbyname("localhost");

	if(!hostEntry)
	{
		sError("Failed gethostbyname()");
		return CS_ERROR;
	}

	//create the socket
	SOCKET theSocket = socket(AF_INET, SOCK_STREAM, 0);

	if(theSocket == SOCKET_ERROR)
	{
		sError("Failed socket()");
		return CS_ERROR;
	}

	//Fill in the sockaddr_in struct
	SOCKADDR_IN serverInfo;

	serverInfo.sin_family = AF_INET;
	serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);

	serverInfo.sin_port = htons(portNo);

	rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
	if(rVal==SOCKET_ERROR)
	{
		sError("Failed connect()");
		return CS_ERROR;
	}
    cout<<"Connection established.\n";

	//sending message
	rVal = send(theSocket, buf, strlen(buf), 0);

	if(rVal == SOCKET_ERROR)
	{
		sError("Failed send()");
		return CS_ERROR;
	}
    cout<<"Message sent.\n";

	//closing socket
	closesocket(theSocket);
	cout << "Closing client"<< endl;
	WSACleanup();

    return 0;
}

void sError(char *str)
{
	MessageBox(NULL, str, "SOCKET ERROR", MB_OK);
	WSACleanup(); 
    
}
__________________
~::/It's not how YOU play the game. It's how the GAME plays you\::~
am!rkh@n آنلاین نیست.   پاسخ با نقل قول
پاسخ

برچسب ها
c++, socket, socket programming, windows

ابزارهای موضوع
نحوه نمایش

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code هست فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال



اکنون ساعت 07:59 PM برپایه ساعت جهانی (GMT - گرینویچ) +4.5 می باشد.


Powered by vBulletin
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd

كليه حقوق اين وب سايت براي ITSecTeam محفوظ ميباشد


Content Relevant URLs by vBSEO ©2011, Crawlability, Inc.