본문 바로가기
코스웨어/16년 스마트컨트롤러

2016-04-14_조재찬_업무일지_네트워크:소켓

by 알 수 없는 사용자 2016. 4. 15.
728x90
반응형

네트워크 





#include <stdio.h> 
int main()

{
	fprintf(stdout, "TEST \n");
	write(1,"TEST \n", 5);
	char caBuff[250];
	
//	fclose(stdout);

	fprintf(stdout, "TEST \n");
	write(1,"TEST \n", 5);


//	write(1, "\033[1;1H/033[2]", 10);    // ANSI 코드를 출력
	read(0, caBuff, 250);
	printf("%s", caBuff);

	return 0;
}


Output :  //주석을 가지고 출력값을 테스트


TEST

TEST TEST

TEST (안녕하세요 입력)

안녕하세요



클라이언트 테스트





main.c  // sendto를 위한 네트워크 소켓생성 소스

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>


int main()
{
	int iSock; // socket 함수의 반환값 받아냄
	struct sockaddr_in stServer; //network에 사용될 ip, port번호 저장

 	int iLen;	// 구조체 길이 저장
	char caBuff[250];	// 최대로 읽어들일 버퍼 크기
	int iRet; // 키보드 입력을 읽어들여 저장, iRet=read	 


	//char *inet_ntoa 숫자 입력하면 문자열 반환

	iSock=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	
	if(iSock<0)
	{	
		printf("소켓 생성불가 \n");
		return;
	}
	memset(&stServer,0, sizeof(stServer)); //구조체 초기화(bzero와 같은 효과)
    
	stServer.sin_family=AF_INET;	//  주소체계 : ipV4 인터넷 프로토콜  
	stServer.sin_addr.s_addr = inet_addr("192.168.1.55"); // 32bit ip 설정
	stServer.sin_port = htons(9999); // 포트번호 설정, 구조체 설정 끝, little->big endian
	
	iLen=sizeof(stServer); // iRen에 구조체 길이 넣어줌
	printf("메시지를 입력하세요 \n");	// app사용자에게 입력상태임을 알려줌
	fflush(stdout);		    
 	iRet=read(0, caBuff, 250);  
	// 첫번째 인자0이면 키보드 입력을 받음, 입력받는 주소 caBuff, 최대 크기 250)
	
	sendto(iSock, caBuff, iRet, 0, (struct sockaddr*)&stServer, iLen);
    // 소켓번호, 데이터가 든곳, 보낼 바이트수, 0, 보내는곳의 정보(구조체 주소), 길이
	// udp로 통신
	close(iSock); // 네트워크 끊김
	return 0;
}





메뉴얼 보기


man htons  // host byte order to network byte order short

네트워크 표준은 big endian이며 intel cpu는 little endian을 채택하고 있기에 변환이 필요함.

728x90