반응형
SMALL
소켓 통신을 공부하다가 잘 정리된 글을 발견하여 참조하기 위해서 공유합니다.
참조한 블로그 : https://m.blog.naver.com/highkrs/220840680504
Server 쪽 소스코드
package socket.server;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MainServer {
public static void main(String[] args) {
ServerSocket s_socket;
try {
// ServerSocket 클래스로 s_socket 객체 생성, 만들 서버의 포트넘버 8888
s_socket = new ServerSocket(8888);
// accept() 메소드 호출
// accept() 는 클라이언트가 들어오는 것을 대기 하는 역할을 함.
// 클라이언트가 해당 8888 포트로 연결을 시도한다면 accept 메소드는 대기를 풀고, 클라이언트와 연결시키는 Socket 클래스를 생성하여 반환.
// c_socket 이 바로 클라이언트랑 1:1 연결된 소켓.
Socket c_socket = s_socket.accept();
System.out.println("c_socket : "+c_socket);
// 클라이언트랑 연결된 소켓으로 부터 OuputStream 객체를 가져옴.
// OutputStream 객체에 서버에서 전달할 메시지를 작성하여 전달하면 됌.
OutputStream output_data = c_socket.getOutputStream();
String sendDataString = "Welcome to My Server";
output_data.write(sendDataString.getBytes());
s_socket.close();
c_socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
client 쪽 소스코드
package socket.client;
import java.io.InputStream;
import java.net.Socket;
public class MainClient {
public static void main(String[] args) {
try {
// Socket 객체를 생성하여 연결 시도
// 연결할 IP 주소와 Port 번호를 매개변수로 넘겨 주어야 해당 주소로 연결을 시도함
Socket c_socket = new Socket("192.168.0.55", 8888);
// 만약 연결이 완료 되었다면 데이터를 스트림 형태로 받아와서 콘솔창에 출력
InputStream input_data = c_socket.getInputStream();
byte[] receiveBuffer = new byte[100];
input_data.read(receiveBuffer);
System.out.println(new String(receiveBuffer));
c_socket.close();
} catch (Exception e) {
//TODO: handle exception
e.printStackTrace();
}
}
}
실행화면
MainServer.java 실행 후
MainClient.java 실행 하면
다음과 같이 찍히는 것을 확인 가능합니다.
반응형
'Programing > JAVA' 카테고리의 다른 글
[java] Map을 로그에 출력하는 방법 (11) | 2022.02.11 |
---|---|
[ Java ] 로컬 ip 및 포트 확인방법 (0) | 2021.11.04 |
[ Java ] 파일생성 (0) | 2021.10.12 |
[ JAVA ] 서버 IP 가져오는 방법 (0) | 2021.03.05 |
[JAVA] quartz 를 이용한 스케쥴러 구현 (0) | 2018.06.18 |