Programming/Socket
C 소켓프로그래밍 Socketpair
whitele
2021. 3. 6. 19:26
반응형
소켓을 이용해서 응용프로그램과 자료를 읽고 쓸 수있다.
sendbuffer에서 자동적으로 상대 receivebuffer에 보내고 read()를 이용해 전송받은 수신버퍼에서 자료를 가져온다.
Socketpair의 헤더와 예제
#include <sys/types.h>
#include <sys/socket.h>
return=socketpair(int domain,int type,int protocol,int sockp[2]);//return int type
sys/types.h와 sys/socket.h를 포함해야하며 socketpair() int형을 반환하며 호출 성공시 0 실패시 -1을 반환한다. 코드는 두개의 소켓을 생성, 자동으로 연결된다.
int sp[2];
if((socketpair(PF_LOCAL,SOCK_STREAM,0,sp)==0)
printf("호출 성공");
TCP/UDP를 지정해야 하나 싶을테지만 그림과 같이 설명한 메커니즘을 보면 이해가 될 것이다.
사용 예제
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <unistd.h>
int main()
{
int sp[2],result;
char buf[BUFSIZ],data[]="data";
result=socketpair(PF_LOCAL,SOCK_STREAM,0,sp);
if(write(sp[0],data,strlen(data+1));
printf("orgin data:%s\n",data);
if(read(sp[1],buf,BUFSIZ));
printf("received data:%s\n",data);
close(sp[0]);
close(sp[1]);
ruturn 0;
}
sp[0],sp[1] 소켓생성, write에서 sp[1]로 전송(자동), sp[1]은 수신 버퍼를 읽어냄 아래 결과를 보면 sp[0],[1]을 생성한 후, 각각의 소켓을 가리키는 소켓 기술자를 저장해서 반환한다. write함수를 쓰면 sp[1]이 문자열 data를 전송 받았음을 볼 수 있다. 반대로 별도의 연결 과정 없이 sp[1]이 송신 sp[0]이 자료를 수신 받을 수 있다.
더보기
참조문헌
정석용의 TCP/IP 소켓프로그래밍 .정석용
728x90
반응형