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;
} |
'Linux & Network' 카테고리의 다른 글
2016 04 26 라즈베리 파이, WiringPi를 이용한 GPIO 제어 (0) | 2016.04.26 |
---|---|
2016 04 18 TCP/IP / 유닉스 프로그래밍 (0) | 2016.04.18 |
20160401_리눅스 터미널 및 통신 (0) | 2016.04.01 |
20160331_리눅스 터미널과 지역변수 (0) | 2016.03.31 |
20160330_리눅스 터미널 (0) | 2016.03.30 |