자바 스윙을 이용한 서버 애플리케이션 프로그램 도와주세여..ㅠ
해나
일단 포트값을 서버사용자가 1024~65535 값 사이에서 입력을 하면 그 값을 받아서 서버가 스타트하는데까지 짰습니다.
근데 이상하게... 번호입력후 시작버튼을 누르면... 콘솔창에는 server ready... 라고까지는 뜨는데 프레임이 먹통이 됩니다.
( 버튼이고 텍스트영역이고 다 enabled(false) 처럼 된다는 말..)
정상적으로 수행되려면 프레임이 먹통이 안된 상태에서 텍스트영역에 서버가 시작되었다라는 문구가 뜨고 클라이언트가 접속하면 테이블상에 그 클라이언트의 정보를 띄울라고 하거든여...
아근데 지금 프레임이 먹통이 되는 상태에 직면해서 며칠동안 진전이없네여...
도와주세요.ㅠ
193라인에 soc = ss.accept(); 이것을 주석처리하면 프레임이 먹통이 안되는걸로 봐서 이게 먼가 문제가 있는것같은데 한번 봐주세면 감사하겠습니다..ㅠ
소스는 파일첨부했습니다.
답변 부탁드립니다...
-
날놓아줘
감사합니다..... 성공했네요..ㅋ 근데 질문이 또있는데... 메뉴에서 도움말-프로그램 정보를 누르면 다이얼로그가 프레임 중간에 떠야하는데 아래쪽으로 치우쳐져서 나타나네요.. 화면전체사이즈랑 프레임사이즈랑 dimension 에 받아서 처리했는데말이죠.... 이것좀 중앙에 나타나게 할려면 어케 수정해야하는지 답변부탁드립니다.. 라인 92 에 다이얼로그 위치코드가 있습니다.
-
찬누리
쓰레드를 별도로 만들지 않았다면, 소스가 실행되는 메인 클래스가 메인 쓰레드로 동작합니다. 즉, 쓰레드가 하나만 돌아가고 있는 것이죠. 그런데 서버쪽에서는 클라이언트가 접속하기만을 기다리는 상태 ss.accept() 이므로, 클라이언트가 접속하지 않는다면 다른 작업을 할 수 없는 상태 즉... 블락킹이 되어버리죠. 따라서 서버쪽에서 클라이언트의 입력과 결과를 출력해주는 작업을 별도의 쓰레드를 생성해서 처리해주어야 합니다. 자바 네트워크 프로그래밍 책이나
-
길가온
소스를 안봐서 맞는지 모르겠지만.......
soc = ss.accept(); ==요거가 클라이언트가 접속될때까지 실행을 멈추는것입니다. 블럭킹이라고 하더군요.
그냥 써버만 만드셧다면 멈추는게 정상이죠. 클라 프로그램을 접속해보세요..그럼 정상적이지 않을까 합니다.
요부분 잘못 처리하면 윈도우 전체가 멈추는 현상도 생긴다던데 전 잘된경우만 해봐서..... -
이름이없다고
흠냐 소스보고 답변할라했더니 이마 아이뒤스님이 답변달은 뒷북이로다~에혀~
-
별하
쓰레드로 처리해야 합니다.