728x90
1. 소켓을 사용하여 두 서버 간 통신하고, ip 주소 등을 받아옴
2. 블랙리스트.txt파일의 ip와 연결된 경우 연결을 끊어버리기
확인할 점
1. 포트를 여는 서버의 실행 파일 : Server01.java
2. 연결을 요청하는 클라이언트 파일 : Client01.java
* 두 파일 모두 java.io.* 와 java.net.* 를 import함
public class Server01 {
public static void main(String[] args) throws IOException {
//서버가 사용할 포트번호를 열어줘야 하는데 이걸 ServerSocket이 해줌
//1.
ServerSocket serverSocket = new ServerSocket(8888);
//9999포트를 쓰겠다고 선언
//2
//클라이언트가 연결요청(3악수) 보냈을 때 응답을 주는 코드
Socket clientSocket = serverSocket.accept();
System.out.println("client IP addr : "+clientSocket.getLocalAddress());
System.out.println("server IP addr : "+clientSocket.getInetAddress());
System.out.println("client Port : "+clientSocket.getPort());
System.out.println("server Port : "+clientSocket.getLocalPort());
//거부할 사용자를 확인하기 위하여 파일을 불러들이고, ArrayList에 집어넣음
ArrayList<String> blackLists = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader("c:\\Java\\aaBitJava\\blacklist.txt"));
while(true){
String line = br.readLine();
if (line==null){
break;
}else{
blackLists.add(line);
}
}
String address = clientSocket.getInetAddress()+"";
for (String i: blackLists) {
System.out.println(i);
if(address.equals(i)){
System.out.println("거부한 사용자가 접속했다");
clientSocket.close();
System.exit(0);
}else{System.out.println("가능한 사용자");}
}
// clientSocket.getInputAddress(); //상대가 보낸 걸 읽을 스트림
// clientSocket.getOutputStream(); //상대에게 보낼 수 있는 스트림
//4
InputStream is = clientSocket.getInputStream();
DataInputStream dis = new DataInputStream(is);
//5
int data = dis.readInt();
System.out.println(data);
clientSocket.close();
//터미널에 netstat -ano 하면 9999로 통신중임을 확인 가능
//현재 ..응답을 기다리고만 있는거래.. 클라이언트가 뭘 보내도 받을 수가 없대.
//그래서 client01.java수정
}
}
public class Client01 {
public static void main(String[] args) throws Exception{
//3
//클라이언트에서 소켓 생성 : 얘가 실행이 되어야 서버가 값을 clientSocket에 넣어 반환할 수 있음
Socket clientSocket = new Socket("192.168.1.20",8888);
//4
//클라이언트가 데이터를 전달하도록 해볼것
OutputStream os=clientSocket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//6
//숫자 하나를 전달해보자
dos.writeInt(100);
clientSocket.close();
}
}
구조도
728x90
'Java' 카테고리의 다른 글
인텔리제이 - RDBMS 연결하기 (0) | 2022.10.11 |
---|---|
로또(배열 중복 제거) (0) | 2022.02.04 |
java-입력을 배열에 저장, 수정 (0) | 2022.01.24 |
java- 입력받은 숫자의 평균구하기 (0) | 2022.01.24 |
java - while 문을 활용해 재시작 (0) | 2022.01.23 |
댓글