728x90

공장내 네트워크



블록킹함수  scanf

논블록킹     printf


연결 지향 : 전용 선로 개설

• Three-way handshake

• 3번의 패킷 교환으로 세션 개설


#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);
	read(0, caBuff, 250);
	printf("%s", caBuff);

	return 0;
}


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


TEST

TEST TEST

TEST (안녕하세요 입력)

안녕하세요



클라이언트 테스트





main.c  // 네트워크 소켓생성 활용 소스

#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;	
	stServer.sin_addr.s_addr = inet_addr("192.168.1.55"); //ip 설정
	stServer.sin_port = htons(9999); // 포트번호 설정, 구조체 설정 끝, le->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;
}


+ Recent posts