서버 클라이언트
1. ServerSocket 생성
2. 클라이언트가 접속할 때 까지 무한 대기상태
3. Socket객체를 생성하여 통신을 요청
4. 통신을 수락
5. 데이터를 주고받을 스트림을 생성 데이터를 주고받을 스트림을 생성
6. 데이터를 주고받는다. 데이터를 주고받는다.
7. 사용했던 자원을 닫아준다. 사용했던 자원을 닫아준다.
192.168.0.2 / 9001 안녕? //sender가 보내주면
안녕? //receiver가 받아서 출력
import java.net.InetAddress;
public class InetAddressTest {
public static void main(String[] args) {
try {
InetAddress addr = InetAddress.getByName("www.naver.com"); //네이버 닷컴의 ipadress 정보를 확인할 수 있다.
System.out.println(addr);
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) {
try {
// 3. 서버에게 통신을 요청한다.
Socket socket = new Socket("192.168.0.2", 9000); // ip주소와 포트번호 9000번 (server에서 설정해줌) //cmd에서 확인한 아이피주소를
// 적어준다.
// 5. 데이터를 주고받을 스트림을 생성
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 6. 데이터를 주고받는다.
for(int i=1; i<=10; i++) {
int n = is.read(); //수신된 데이터를 읽어옴.
System.out.println("서버로 부터 수신된 데이터: " +n);
Thread.sleep(200);
}
// 7. 사용했던 자원을 닫아준다.
is.close();
os.close();
socket.close();
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
public class TCPServer {
public static void main(String[] args) {
Random r = new Random(); //랜덤 생성
try {
// 1. ServerSocket을 생성한다.
ServerSocket server = new ServerSocket(9000);
// 2. 클라이언트의 접속이 있을 때 까지 무한 대기상태
while (true) {
// 4. 클라이언트의 접속을 수락한다. (반환하는 메소드 Socket)
Socket socket = server.accept(); // 소켓 객체를 반환한다.
System.out.println("** 클라이언트가 연결하였습니다. **");
// 5. 데이터를 주고받을 스트림을 생성
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 6. 데이터를 주고받는다.
// 연결한 클라이언트한테 정수 난수 10개를 만들어 보내주도록 하자.
for(int i=1; i<=10; i++) {
//0에서 100사이의 난수를 만들자.
int n = r.nextInt(100);
System.out.println("서버에서 난수를 만들었습니다. " + n);
//만들어진 난수를 클라이언트한테 보낸다.
os.write(n); //정수를 내보냄
Thread.sleep(200); //0.2초 정도의 대기시간
}
System.out.println("클라이언트에게 데이터를 모두 내보냈습니다.");
// 7. 사용했던 자원을 닫아준다.
is.close();
os.close();
socket.close();
}
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}