socket 프로 그래 밍 (1) 가장 간단 한 c / s 모드

가장 간단 한 C / S 모델 은 전형 적 인 입문 모델 이자 대부분 교재 에서 가장 많이 설명 한 것 으로 전체적으로 다음 과 같은 몇 가지 절차 로 나 뉜 다.
왼쪽 은 클 라 이언 트 모드 이 고 오른쪽 은 서버 모드 입 니 다.
서버 모드 가 상대 적 으로 복잡 하 다 는 점 은 긍정 적 인 것 입 니 다. 서버 가 다양한 클 라 이언 트 와 의 연결 에 직면 하기 때 문 입 니 다.
관련 함 수 는 설명 하지 않 고 입문 단계 의 책 에는 모두 있 으 며 매우 상세 하 게 설명 되 어 있다.
여 기 는 소 개 를 많이 안 해 요!
 
다음은 서버 모드 로 정보 수신 만 담당 합 니 다.
#include <iostream>
#include <WINSOCK2.H>
#pragma comment(lib,"Ws2_32.lib")

using namespace std;

int main(int argc, char* argv[])
{
	char buff[255];
	WSADATA wsa;
	//       
	if ( WSAStartup( MAKEWORD(2,2) , &wsa ) )
	{
		cout<<"1!"<<endl;
	}
	//               
	SOCKET server_socket = socket(AF_INET , SOCK_STREAM , 0);
	
	SOCKADDR_IN serveradd;
	serveradd.sin_family = AF_INET;
	serveradd.sin_port = htons(8000);
	serveradd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	//  
	if(bind(server_socket , (SOCKADDR *)&serveradd , sizeof(serveradd)) == SOCKET_ERROR)
	{
		cout<<"2"<<endl;
		WSACleanup();
	}
	//    
	if(listen(server_socket , 5) == SOCKET_ERROR)
	{
		cout<<"3"<<endl;
		WSACleanup();
	}
	
	//            
	SOCKADDR_IN clientadd;
	int len = sizeof(clientadd);

	int irecv = 0 ;
	//  
	SOCKET client_sock = accept(server_socket , (SOCKADDR *)&clientadd , &len); 
	while (1)
	{
		//          !
	 	irecv =  recv(client_sock , buff , 255 , 0);
		if (irecv == 0 || irecv == SOCKET_ERROR  )
		{
			break;
		}
		cout<<buff<<endl;
	}

	return 0;
}


클 라 이언 트 의 예 를 계속 붙 입 니 다.
클 라 이언 트 는 데이터 만 보 냅 니 다.
 
#include <iostream>
#include <WINSOCK2.H>
#pragma comment(lib,"Ws2_32.lib")

using namespace std;

int main(int argc, char* argv[])
{
	char buff[255];

	//       
	WSADATA wsa;
	if ( WSAStartup( MAKEWORD(2 , 2) , &wsa ) )
	{
		cout<<"WSAStartup error !"<<endl;
	}
	
	//     
	SOCKET client_socket = socket( AF_INET , SOCK_STREAM , 0 );
	if (client_socket == INVALID_SOCKET)
	{
		cout<<"       "<<endl;
	}
	
	//       
	SOCKADDR_IN server_addr;

	server_addr.sin_family = AF_INET ; 
	server_addr.sin_port = htons(8000);
	server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

	//     
	int ret = connect(client_socket ,(SOCKADDR *)&server_addr , sizeof(server_addr));
	if (ret == SOCKET_ERROR )
	{
		cout<<"    "<<endl;
	}
	while (1)
	{
		cin>>buff;
		send(client_socket , buff , strlen(buff)+1 , 0 );
		Sleep(1000);
	}
	return 0;
}

 
 

좋은 웹페이지 즐겨찾기