본문 바로가기

반응형

개발/소켓 프로그래밍

(3)
[1] 에코 서버 만들기 먼저 에코 서버를 만들어 봅시다 에코 서버의 동작 원리는 다음과 같습니다 1. 클라이언트가 서버에게 문자열을 전송한다 2. 서버는 전달받은 문자열을 그대로 클라이언트에게 리턴한다 서버를 구현하기 위해서는 아래와 같은 구현이 필요합니다 1. 서버는 항상 클라이언트의 요청을 대기한다 2. 요청이 확인되면 클라이언트에게 데이터를 반환한다 public class Server { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(); [1] serverSocket.bind(new InetSocketAddress("localhost", 1234)); Socket socket = null; [2] whi..
소켓 프로그래밍 시작 전 사전지식 소켓은 두 노드 사이에 통신을 가능하게 하는 엔드포인트라고 생각하면 편합니다 이렇게 써놓으면 어려울 수 있는데 "소켓은 파일이다" 이거 하나만 기억하면 됩니다 그냥 파일에 대고 읽고/쓰면 다른 애가 이걸 집어간다 정도로 이해합시다 파일에 읽고 쓴 걸 누가 집어가느냐하면 OS가 집어갑니다 이때 TCP/UDP 등 소켓 종류에 따라 OS가 처리해주는 방식이 다릅니다 아무튼 소켓은 파일이다 보니 입출력에 주의해야합니다 내가 파일에 뭐라도 써야 읽어갈 데이터가 있는거고, 그러면 이거 읽으려는 친구는 보통 계속 대기해야 하기 때문입니다 이걸 어렵게 말하면 봉쇄(block)이라고 합니다 파일 어떻게 읽고/쓸건지 다양한 방법이 있는데요 전부 구현할 예정입니다 다 구현하려니까 살짝 두렵지만... 포기하지 않고 끝까지 포..
다중 채팅 서버 실습 최근에 네트워크 강의를 수강하고 채팅 서버 실습을 진행했습니다 인터넷에는 뭔가 마음에 드는 채팅 서버 실습이 이상하게 없어 직접 만들었습니다(구현이 이상하거나, 내용이 좋으면 옛날 자료...) 직접 만든 채팅 서버/클라이언트의 동작 모습입니다 클라이언트는 특별한 동작없이도 다른 클라이언트의 채팅 내용을 받을 수 있습니다 자세한 동작 원리는 아래와 같습니다 서버로 입력되는 데이터를 현재 연결된 모든 클라이언트의 소켓에 브로드캐스트합니다(해당 데이터를 전송한 클라이언트를 제외한 모두) 단순히 브로드캐스트하기 때문에 특별한 저장공간은 필요하지 않습니다 클라이언트는 서버의 소켓에 데이터를 쓸 수 있고, 별도의 쓰레드에서 서버로부터의 입력을 항상 대기하고 있습니다 소스코드 추후에 추가 하도록 하겠습니다

반응형