다중 서버를 사용하지 않고 여러개의 소켓 입,출력을 처리할수 있나요?
글쓴이: gloomyr / 작성시간: 화, 2011/08/23 - 12:14오후
struct A { data a } struct B { data b } /<code> 기존에 구성되어 있던 방법이 A 타입에 대해서만 send , recv 하고있엇는데요 사정이 있어서 B 타입도 추가로 send, recv 해야될 상황입니다. 두개의 데이터는 따로 통신해야 하는 상황이구요. 타입두개를 합쳐서 처리할수 없는 상황입니다. 네트워크 카드를 새로 장착할수도 없는 상황 1. B타입용 소켓을 추가로 BIND 시켜서 사용하면 될런지? 2. A타입으로 바인드된 소켓에 PORT 번호만 다르게 해서 사용할수 있는지? 다중 서버를 사용하지 않고 타입 B 데이터를 주고받을려면 어떻게해야하나요 ''
Forums:
다른 구조체를 가지고 구조체 자체 통신을 하신다면
다른 구조체를 가지고 구조체 자체 통신을 하신다면 만약 A 구조체에서 앞부분에 타입을 알아 낼수 있는 형태로 구성이 되어 있다면 B 구조체를 A 구조체와 유사하게 만들어 앞부분만 먼저 읽어 보고 타잎을 알아낸 다음에 나머지 읽어서 구조체에 밀어 넣는 방식으로 한다면 구지 다른 포트를 바인딩하지 않아도 될것 같습니다.
예를 들면
struct A
{
short int type
int data1
int data2
}
struct B
{
short int type
unsigned long data1
short int data2
}
이럴 경우 2바이트만 먼저 읽어 보고 A,B 타잎을 결정한 다음 각 타잎에 맞는 나머지 사이즈 만큼 읽은 다음에 구조체에 밀어 넣는것입니다.
다른 포트를 바인딩해서 사용하실거면
1. 1개 이상의 포트 바인딩
2. SELECT()에 서버쪽 바인딩된 각각의 FD를 SET해서 읽기.
이런 식으로 하시면 될겁니다. TCP뿐만 아니라 다양한 방식으로 바인딩 해놓고 한 프레임웍에서 대기 가능합니다.
댓글 달기