[Day 13]公費0413-内容整理
🌞java.net
🌈InetAddress
🌈URL
🌞つうしんプログラム
🌈通信に関する基本用語
🌈つうしんモード
🍁TCP方式
まず、通信するコンピュータと接続を確立し、相手のコンピュータがデータを受信する準備ができているかどうかを確認し、
🍁UDP方式
🌈通信方式によるJava提供クラス
🍁TCP方式
🍁UDP方式
🌈TCPネットワークプログラミングプロセス
서버 클라이언트
1. ServerSocket 생성
2. 클라이언트가 접속할 때 까지 무한 대기상태
3. Socket객체를 생성하여 통신을 요청
4. 통신을 수락
5. 데이터를 주고받을 스트림을 생성 데이터를 주고받을 스트림을 생성
6. 데이터를 주고받는다. 데이터를 주고받는다.
7. 사용했던 자원을 닫아준다. 사용했던 자원을 닫아준다.
🌈UDP
🍁UDPSender
192.168.0.2/9001こんにちは?//差出人から送られてきた言葉.
🍁UDPReceiver
こんにちは.受信出力
🌞例
🌟(InetAddress)例1🌟
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());
}
}
}
🌟(TCPClient)例2🌟
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());
}
}
}
🌟(TCPServer)例3🌟
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());
}
}
}
Reference
この問題について([Day 13]公費0413-内容整理), 我々は、より多くの情報をここで見つけました https://velog.io/@rlaehdus0417/Day-13-국비-0413-내용-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol