아래 그림과 같이 구조체를 만든다. 나중에 이 구조체를 함수의 인자로 넘긴다.
그리고 두 개의 전역변수인 uiUser와 stpLink[MAXUSER]를 유심히 봐야한다.
위의 구조체가 vp로 넘긴다.
아래는 함수의 전체 소스.
아래 그림의 전역변수stTempinfo.uiUser= uiUser;에서 접속자의 번호를 집어넣는다.
함수에서 구조체형 Tinfo stMyInfo를 선언한 뒤, 바로 vp를 대입한다.
물론, 캐스팅을 해줘야하며, vp는 stTempinfo의 주소이기 때문에 포인터 *을 앞에 붙여서 대입한다.
전역변수 구조체 Tinfo형 포인터 배열인 stpLink[]에 인덱스와 대입되는 값을 주의깊게 본다.
이 부분에서 stMyInfo는 클라이언트로부터 송신된 데이터, uiUser, iSock ,tID, (접속자, 번호, 쓰레드 번호)
등 첫 번째 원소인 stMyInfo주소(포인터 배열이기 때문에)에 넣는다.
아래 0을 집어넣는 것은 main()함수에서
이 부분때문이다. 여기서 while문을 쓴 이유는 서버에서 ClientRecv()함수가 데이터를 받아 값을 집어넣는 시간을
벌기 위해서이다. 지연을 시키지 않으면, 현재에 가지고 있는 값을 처리하기도 전에 다음 데이터 값을 덮어씌여버리는
현상이 발생할 수 있기 때문에 while문으로 지연시킨다. ((Tinfo*)vp)->iSock=0;이 실행되면 while문을 빠져나가 아래 코드가 비로소 실행이 된다.
두 번째 빨간색 네모 보류....
배열 인덱스에 해당하는 값을 집어넣고 클라이언트가 로그아웃했을 때의 접속자 번호를 앞으로 당겨 변경하는 코드인데
자세히 모르므로 보류, 나중에 정리 하겠음.
'네트워크 > vmware 실습' 카테고리의 다른 글
7월 11일 송수신 버퍼크기와 인터넷 ip주소 (0) | 2013.07.11 |
---|---|
7월 11일 브로드캐스트 (정리 중) (0) | 2013.07.11 |
7월 9일 서버와 클라이언트 thread 활용1 (0) | 2013.07.09 |
7월 8일 pthread.h에 포함되어 있는 함수 몇개, 그리고 makefile (0) | 2013.07.08 |
7월 8일 파일소켓으로 ptread (0) | 2013.07.08 |