요르딩딩
[Personal_Project] 소캣(Client Socket/ Server Socket) 본문
728x90
반응형
이번시간에는 회의시간에 발표한 소캣관련 간단한 ppt를 첨부하여 설명을 대체하도록 하겠습니다.
아래는 직접 테스트해본 소스와 디버깅결과를 첨부하였습니다. 참고해주시면 됩니다.
1. Server Socket
@Service("socketServerService")
public class socketServerImpl implements socketServerService {
@SuppressWarnings("resource")
public void socketServer() {
try {
System.out.println("Server Socket 생성");
ServerSocket serverSocket = new ServerSocket(6080); // 현재 아이피로 8981포트를 사용하여 서버 오픈
while (true) {
System.out.println("*******접속 대기중*******");
Socket clientSocket = serverSocket.accept();// 계속 기다리고 있다가 클라이언트가 접속하면 통신할 수 있는 소켓 반환
System.out.println("-------Server Socket 연결 && New Socket 생성-------");
// 입력 스트림
InputStream is = clientSocket.getInputStream();
System.out.println("New Socket : InputStream");
byte[] bytes = new byte[1024];
int readByteCount = is.read(bytes);
if (readByteCount > 0) {
/*
//TODO: 새로운 소켓으로 들어온 입력값을 출력하기위함 => 작동안됨
String data = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
while (!(data = reader.readLine()).equals(null)) {
System.out.println("from Client>" + data);
}
*/
// 출력 스트림
OutputStream os = clientSocket.getOutputStream();
System.out.println("New Socket : OutputStream");
os.write(bytes);
os.flush();
}
clientSocket.close();
System.out.println("-----------------New Socket 닫힘------------------");
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. Client Socket
@Service("****Service")
public class *****ServiceImpl implements ******Service{
@SuppressWarnings("unused")
@Autowired
private static Properties ****Properties;
public ****Result socketClient() throws Exception {
****Result result = new ****Result();
String data = null;
String st = "Hellow World";
Socket socket = new Socket(); // 소켓 생성
SocketAddress address = new InetSocketAddress("127.0.0.1", 6080); //주소 생성
System.out.println("*******Client Socket 생성*******");
try {
socket.connect(address); //소캣연결
System.out.println("-------Client Socket Connect-------");
OutputStream os = socket.getOutputStream(); //출력 스트림
os.write(st.getBytes());
os.flush();
System.out.println("Client Socket : OutputStream");
InputStream input = socket.getInputStream(); //입력 스트림
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
data = reader.readLine();
System.out.println("Client Socket : InputStream = " + data);
socket.close(); // 소캣 닫기
System.out.println("--------Client Socket Close--------");
}
catch (Exception e) {
e.printStackTrace();
System.out.println("******* Fail *******");
}
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("data", data);
result.setResultData(map);
return result;
}
}
728x90
반응형
'[Personal_Project]' 카테고리의 다른 글
[Personal_Project] globals.properties 암복호화 적용 (0) | 2021.08.27 |
---|---|
[Personal_Project] globals.properties 적용 (0) | 2021.08.03 |
[Personal_Project] 환경별 배포 패키징 다르게하기(maven, resource, profile, pom.xml, jenkins) (1) | 2021.07.20 |
[Personal_Project] 파일업로드 (단일/다중) (8) (0) | 2021.05.12 |
[Personal_Project] DI (필드, 수정자, 생성자)주입방법 (7) (0) | 2021.05.03 |
Comments