뚜벅이

0307 국비 미니프로젝트지옥경험중.. +정처기필기합격 본문

국비과정 JAVA공부

0307 국비 미니프로젝트지옥경험중.. +정처기필기합격

ZZM 2021. 3. 7. 18:36

 

소켓(socket)  다시 복습. 

- 컴퓨터가 연결된 컴퓨터의 끝점(전기의 소켓과 유사한 개념)
- 정보 송신 : 소켓에 보낼 정보를 Write
- 정보 수신 : 소켓으로부터 정보를 Read
- TCP/IP 소켓
  TCP 소켓
  UDP 소켓

* 네트워크의 필수 조건

- IP 주소 : PC 고유의 주소 (ex. 192.168.0.1)
- Port 번호 : 16bit (0 ~ 65535)
  하나의 컴퓨터에서 다수개의 네트웍 관련 프로그램이 서로 다른 포트를 사용하여 동시에 실행
  실제 네트워크 라인은 하나
  논리적인 개념
- 프로토콜 : TCP, UDP <- 약속
- 기타 : subnet mask, dns, gateway 등

2. TCP 통신
* TCP 통신

- 패킷(packet) 단위로 전송
  연결성 통신 방식(전화)
  신뢰성 보장
  TELNET, HTTP, FTP 등
- 효율이 떨어진다

* 자바의 TCP 구현을 위한 클래스들

- InetAddress 클래스
- Socket 클래스
- ServerSocket 클래스


정보처리기사 채점. 
43411  -3
24412 -1
22113 -1
34243 75

24433
32213
12413 -1
12113 95

21114 -1
23213
33132 -2
41341 85


43231 -2
12412 -1
13441 -1
43443 80

23433
43334 -1
42132 -2
14322 -4 65

75 95 85 80 65  = 가채점상 평균 80?으로합격~

 

 

  •  
  • 1. 현재 상태는 serversocket.accept()로 대기상태가 되면

    당연하지만 1명하고만 정상적인 통신이 가능합니다.

    중간에 다른컴퓨터로 똑같은 URL을 요청하면 모든게 꼬여버리죠. 결과도 안나오고

     

    2. 그래서 하려는 것은 멀티스레드로 여러사람이 동시에 이용할 수 있게 구현하는것이고,

    이것을 mvc패턴의 컨트롤러내에서 처리를 하고 싶습니다.

    (구글내의 기본적인 코드를 보면 server쪽도 main()함수가 있는 java application프로젝트라서)

    이것이 가능한지 가능하면 방법은 어떤것인지

    불가능하다면 어떤 방식으로 만들어야하는지를 알고 싶습니다.

     

    0

  •  

     

    단설 

     623

    2016-08-12 16:21:18

    https://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support 

    위 문서 참고하셔서 비동기로 text파일 전송하고 결과값 돌려주면 되지 않을까요?

    0

  •  

     

    timeclip 

     363

    2016-08-12 16:52:35

    소켓을 전역에서 한번만 선언해서 쓰시는건가요?

    소켓을 여러개 생성해서 돌려가며 사용하면 되지 않을까 싶어요...(pooling)

    0

  •  

     

    즈루시 

     

    2016-08-12 16:58:14

    소켓 통신을 꼭 해야한다면 스프링(앱) 기동시 서버 프로그램 컴포넌트 하나 달아서 기동시키면 됩니다.

    뭔가 생각을 너무 어렵게 하고 계신건 아니신지도... 

     

    http://stackoverflow.com/questions/26936721/how-do-i-set-up-a-spring-tcp-client-and-server-model 

     

    덧. 혹시나 컨트롤러에 요청때마다 서버 소켓을 열고 계신건 아니시죠?

    컨트롤러는 요청때마다 돌고 있는 컴포넌트(서버)에 해당 요청을 넘겨주는 일만 하셔야 합니다.

    0

  •  

     

    LMS 

     129

    2016-08-12 17:11:47

    답변 정말 감사합니다.

    제가 생각치도 못한 답변만 있어서 정말 큰 도움 될것 같습니다. 해보고 다시 질문하러 오겠습니다.

    0

  •  

     

    kkey21a 

     4k

    2016-08-12 18:27:43

    동기식IO는 요청 한 건당 스레드를 발생시켜서 처리되는 구조입니다.

     

    클라이언트를 멀티스레드로 구현할 것이 아니라 서버 구성을 멀티스레드로 구현해야 될 것 같아요.

    위에 올리신 코드 보니 서버를 멀티스레드로 구현하지 않은 듯 보이네요.

okky.kr/article/343662