TcpSocketServer
1. ServerSocket 객체생성
ServerSocket 변수명 = new ServerSocket(포트번호);
- 예시
더보기
ServerSocket server = new ServerSocket(7777);
2. accept() : 클라이언트 접속 대기
Socket 변수명 = ServerSocket_변수명.accept();
- 예시
더보기
Socket socket = server.accept();
3. output 스트림을 통한 데이터 송신(서버 -> 클라이언트)
DataOutputStream 객체 생성
DataOutputStream 변수명 = new DataOutputStream(Socket_변수명.getOutputStream());
DataOutputStream_변수명.writeUTF("");
ㄴ클라이언트 콘솔에 보임
- 예시
더보기
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("어서오세요 반갑습니다.");
4. close() : 통신종료
DataOutputStream_변수명.close();
ServerSocket_변수명.close();
- 예시
더보기
dos.close();
server.close();
TcpSocketClient
1. IP 주소 선언
- 자기자신 컴퓨터 나타내는 방법(IP주소 또는 host name 쓰기)
//IP주소 : 127.0.0.1 (나 자신을 나타내는 주소)
String 변수명 = "127.0.0.1";
//host name : localhost
String 변수명 = "localhost";
- 예시
더보기
String serverIP = "localhost";
2. Socket 객체 생성해서 서버 연결 요청
Socket 변수명 = new Socket("IP주소",포트번호);
- 예시
더보기
Socket socket = new Socket(serverIP,7777);
3. 서버에서 보내온 메시지 받기
DataInputStream 객체생성
DataInputStream 변수명 = new DataInputStream(Socket_변수명.getInputStream());
DataInputStream_변수명.readUTF()
↳TcpSocketServer 클래스에서 DataOutputStream_변수명.writeUTF("메시지") 메시지 받음
- 예시
더보기
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("서버로부터 받은 메서지 : "+ dis.readUTF());
4. close() : 통신종료
DataInputStream_변수명.close();
Socket_변수명.close();
- 예시
더보기
dis.close();
socket.close();
원본 (TcpSocketServer 실행 → TcpSocketClient 실행)
TcpSocketServer
더보기
package kr.or.ddit.tcp;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpSocketServer {
public static void main(String[] args) throws IOException {
//소켓이란? 두 호스트 간에 통신을 하기 위한 양 끝단(EndPoint)을 말한다.
//TCP 소켓 통신을 하기 위해 ServerSocket 객체 생성하기
// 7777 : 포트번호 => 포트이용해서 서비스함
ServerSocket server = new ServerSocket(7777);
System.out.println("서버가 소켓접속을 기다립니다.");
//accept() 메서드는 클라이언트에서 접속 요청이 올 때까지 계속 기다린다.
//연결 요청이 오면 Socket객체를 생성해서 클라이언트와의 통신에 사용한다.
//메인스레드가 멈춤 -> 클라이언트가 소켓 접속하고 한쌍 만들고 나면 메인 스레드 진행
Socket socket = server.accept();
//-----------------------------------------------
// 이 이후는 클라이언트의 연결된 후의 작업을 진행하면 된다.
System.out.println("접속한 클라이언트 정보");
System.out.println("주소 : " + socket.getInetAddress());
//클라이언트에 메시지 보내기
//writeUTF 쓰기 위해서 DataOutputStream객체 생성
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("어서오세요 반갑습니다.");
System.out.println("클라이언트에 메시지를 보냈습니다.");
dos.close();
server.close(); // 서버 닫기
}
}
TcpSocketClient
더보기
package kr.or.ddit.tcp;import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.print.attribute.standard.Severity;
public class TcpSocketClient {
public static void main(String[] args) throws IOException {
// String serverIP = "127.0.0.1";
String serverIP = "localhost";
//자기 자신 컴퓨터를 나타내는 방법(IP주소 또는 host name 쓰기)
//IP주소 : 127.0.0.1
// (나 자신을 나타내는 주소)
//host name : localhost
System.out.println(serverIP + "서버에 접속중입니다.");
//소켓을 생성해서 서버에 연결 요청
Socket socket = new Socket(serverIP,7777);
// 연결이 되면 이 후 부분이 실행된다.
System.out.println("연결 되었습니다.");
// 서버에서 보내온 메시지 받기
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("서버로부터 받은 메서지 : "+ dis.readUTF());
System.out.println("클라이언트 소켓 연결 종료");
dis.close();
socket.close();
}
}
'JAVA > NetWork' 카테고리의 다른 글
소켓통신 (1) | 2024.02.16 |
---|---|
Chat(1:1 채팅프로그램) (0) | 2024.02.16 |
URL클래스 (0) | 2024.02.14 |
URLConnection (0) | 2024.02.14 |
InetAddress 클래스 (0) | 2024.02.14 |