목표
서버 - 쓰레드 여러개 만들고 각각 소켓열어서 listen하다가 접속 요청 오면 accept 후 통신
클라이언트 - 특이사항 없음 그냥 진짜 일반적인 클라이언트
서버 코드
pthread_create로 5개 정도 쓰레드 생성
쓰레드 메인
일반적인 1:1 통신 코드 짜듯이
socket, bind, listen, accept를 사용했음
.
.
.
listen(server_socket, 5);
printf("%d listening\n",쓰레드 id); // 정상적으로 모든 쓰레드가 출력 됨
accept();
printf("%d 개통 되었습니다\n",쓰레드 id);
//서버측에서는 오직 하나의 스레드만 accept를 넘어가서 printf로 출력 됨
//그런데 client에서는 connect함수까지 가는 것으로 봐서는 뭔가가 되긴 하는데 뭐 이러노
문제
서버에서 thread를 여러개 만들지만 실제로 클라이언트와는 오직 하나의 연결만 설정됨
나머지 쓰레드 들은 아예 다른 클라이언트와 accept자체가 안되는듯 아니 되는지 안되는지도 모르겠음
어차피 짧은 코드를 올려도 볼 형들이 없으므로 코드는 생략했습니다
thread를 이용해서 다중 접속 통신 환경 만들 때
뭘 다르게 해야하는지 뭐가 문제인지 모르겠네요
서버 - 쓰레드 여러개 만들고 각각 소켓열어서 listen하다가 접속 요청 오면 accept 후 통신
클라이언트 - 특이사항 없음 그냥 진짜 일반적인 클라이언트
서버 코드
pthread_create로 5개 정도 쓰레드 생성
쓰레드 메인
일반적인 1:1 통신 코드 짜듯이
socket, bind, listen, accept를 사용했음
.
.
.
listen(server_socket, 5);
printf("%d listening\n",쓰레드 id); // 정상적으로 모든 쓰레드가 출력 됨
accept();
printf("%d 개통 되었습니다\n",쓰레드 id);
//서버측에서는 오직 하나의 스레드만 accept를 넘어가서 printf로 출력 됨
//그런데 client에서는 connect함수까지 가는 것으로 봐서는 뭔가가 되긴 하는데 뭐 이러노
문제
서버에서 thread를 여러개 만들지만 실제로 클라이언트와는 오직 하나의 연결만 설정됨
나머지 쓰레드 들은 아예 다른 클라이언트와 accept자체가 안되는듯 아니 되는지 안되는지도 모르겠음
어차피 짧은 코드를 올려도 볼 형들이 없으므로 코드는 생략했습니다
thread를 이용해서 다중 접속 통신 환경 만들 때
뭘 다르게 해야하는지 뭐가 문제인지 모르겠네요
아뇨 socket을 thread main에 넣었기 때문에 thread간 공유하고 있지는 않을꺼에요
보통 listen 스레드에서 accept 하고 accept에서 넘겨준 소켓을 recv 스레드로 넘겨주지 않나..?
메인 프로세스에서 루프로 accept 대기하고 개통 될 때마다 쓰레드 생성해서 소켓 넘겨주는 기법으로 바꿔 만들라 이 말씀이시죵? 감사합니다 한번 시도해보겠습니다