게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
소켓통신 질문드립니다.
게시물ID : programmer_20760짧은주소 복사하기
작성자 : 전벙글이예요
추천 : 0
조회수 : 596회
댓글수 : 4개
등록시간 : 2017/06/05 01:18:00
옵션
  • 본인삭제금지
현재 윈도우(서버)와 리눅스(클라이언트) 간의 양방향 소켓통신을 하고 있습니다.

서버와 클라이언트 통신은 서로 잘 됩니다.

스레드를 이용해서 서로 값을 잘 주고 받습니다.

그런데 한 가지 문제가 있습니다.

예를들어서

서버에서 apple 라는 메세지를 보내면 클라이언트는 apple 이라는 문자열에 걸린 조건을 수행합니다.

orange를 보내면 클라이언트는 orange에 걸린 조건을 수행합니다.

이런 식으로 조건을 걸어줬습니다.

처음에 해보면 잘 됩니다.

그런데 문제는

처음에 보낸 문자열이 apple 이고
두번째에 보낸 문자열이 orange면
세번째에 apple을 보내도 클라이언트에서 반응을 하지 않습니다.
orange 는 반응을 합니다.
여기서 todayhumor을 보내서 조건을 수행하면
apple 과 orange 둘다 반응을 하지 않게 됩니다.

증상을 요약하자면
"지금까지 보냈던 최대길이의 문자열보다 길이가 짧은 문자열들은 클라이언트에서 반응을 하지 않는다" 입니다.

보낼때마다 fflush로 메세지 배열을 비워봤는데 이건 실행중 오류가 나구요..

어떤 문제인지 감이 잡히질 않아서 질문을 드리게 되었습니다.

윈도우와 리눅스 코드를 첨부합니다.

press를 입력하게 되면 off와 on 문자열 조건을 처리하지 못하게 되는 현상입니다.
혹은 press 보다 더 긴 문자열을 입력하면 모든 문자열 처리를 하지 못하게 됩니다.

윈도우 서버 send 함수
1.jpg

리눅스 클라이언트 recv 함수
2.jpg

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호