지금 컴퓨터와 보드 간 tcp/ip 통신 중입니다.


그런데 보드 쪽에 포트만 다르고 ip값만 같은 여러개의 서버를 두려고 했습니다만


문제가 생겨서 질문 드립니다. 


서버가 연결되면 xPrintf( "Client connect enable passed (socket:%d) \r\n", client_socket); 에 의해

[client_socket     = accept( server_socket, (struct sockaddr*)&client_addr, &client_addr_size );]

메세지가 나옵니다. 그런데 이게 원래라면 1... 접속 중인 서버가 1개 이므로 1이라고 나와야 하는데 계속 3만 나오더군요...


이러면 의심되는 건 제 컴퓨터에서 사용된 소켓 접속 프로그램이 안 닫혀서 계속 열려있다던가 아니면 


보드에서 계속 열고 있다고 생각하는데 어떻게 해결해야 다시 초기화를 시키고 할 수 있을까요?


또 제가 부트로더 역시 TCP/IP 소켓으로 받아서 사용하고 있습니다. 


이더넷을 100mbps를 써볼려고 그러는데 지금 속도가 10mbps로 날려야만 동작을 하더군요. 

(다른 소켓 프로그램은 프로토콜을 주고받는데 정상적으로 문제 없이 동작하는데 로더만 그러더군요.)


10mbps에서 100mbps로 속도를 바꿀 경우 소켓을 사용해야 하는데 주의해야 할 것이 있는지 궁금합니다. 


마지막으로


소켓 플래그(recv 혹은 send에 쓰이는 옵션)으로 보이는데 이걸 어떤 때에 사용해야 효율적으로 사용할수 있는지


예를 들어주실수 있을까요? MSG_DONTWAIT  는 이해했는데 다른 옵션들은 잘 이해가 안됩니다.


/*

 * Option flags per-socket.

 */

#define  SO_DEBUG  0x0001    /* turn on debugging info recording */

#define  SO_ACCEPTCONN  0x0002    /* socket has had listen() */

#define  SO_REUSEADDR  0x0004    /* allow local address reuse */

#define  SO_KEEPALIVE  0x0008    /* keep connections alive */

#define  SO_DONTROUTE  0x0010    /* just use interface addresses */

#define  SO_BROADCAST  0x0020    /* permit sending of broadcast msgs */

#define  SO_USELOOPBACK  0x0040    /* bypass hardware when possible */

#define  SO_LINGER  0x0080    /* linger on close if data present */

#define  SO_OOBINLINE  0x0100    /* leave received OOB data in line */

#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */


매번 이 홈페이지에서 많은걸 배우고 갑니다.


추위 조심하시구요. 즐거운 하루 되시길 바랍니다.