도와주세요!!
tcp ip로 보드와 통신하는걸 쭉 따라 해봤는데요.
tcp ip로 보드와 통신하는걸 쭉 따라 해봤는데요.tcp ip로 보드와 통신하는걸 쭉 따라 해봤는데요.
아래와 같이 해놓으니 Accept() 부분에서 잡아주고 있는 부분이 있어서 그런지 통신을 하나만 가능하더군요.
테스트 할때는 TESTServer 와 TCPfileUpDateServer 둘 중 하나를 주석 처리해 놓아서 그런지
(각각 아이피만 같고 포트가 다릅니다.)
두개 다 동시에 서버 접속이 가능했었는데 주석 처리를 풀어 놓고 테스트를 하니 한 개의 서버만 접속이 가능하네요.
다른 기능의 서버를 1~2개 더 추가하고 싶은데 이걸 어떻게 해야할지 모르겠네요.
각 서버들은 select 모델 등으로 구현한건 아니고
네트워크 프로그래밍 강좌에 나온 것 처럼 bind-> connect -> accept -> (recv -> send) 로 구성되어 있습니다.
(아래는 윈도우 tcp/ip 소켓 프로그래밍 책을 참조하여
보드에서 멀티 쓰레드 서버를 흉내내 봤습니다. 제대로 한건지 모르겠네요.)
void main( void )
void vBasicTCPServer( void *pvParameters )
{
extern err_t ethernetif_init( struct netif *netif );
/* Parameters are not used - suppress compiler error. */
( void ) pvParameters;
/* Create and configure the EMAC interface. */
IP4_ADDR( &xIpAddr, emacPUIPADDR0, emacPUIPADDR1, emacPUIPADDR2, emacPUIPADDR3 );
IP4_ADDR( &xNetMast, emacNETMASK0, emacNETMASK1, emacNETMASK2, emacNETMASK3 );
//IP4_ADDR( &xGateway, emacGATEWAYADDR0, emacGATEWAYADDR1, emacGATEWAYADDR2, emacGATEWAYADDR3 ;
netif_add( &EMAC_if, &xIpAddr, &xNetMast, IP_ADDR_ANY/*&xGateway*/, NULL, ethernetif_init, tcpip_input );
/* make it the default interface */
netif_set_default( &EMAC_if );
/* bring it up */
netif_set_up(&EMAC_if);
/* Initialize*/
/* Nothing else to do. No point hanging around. */
vTaskDelete( NULL );
}
p.s. 텔넷 서버도 TCP/IP 소켓 프로그래밍 한 걸 기반으로 구현 해보려고 있는 중인데
참조할 만한 예제나 아니면 주의해야 할 것 등이 있을까요?
프로토콜 볼때마다 속이 울렁 울렁. 머리속은 술렁 술렁.