소켓이란? 두 호스트 간에 통신을 하기 위한 양 끝단(EndPoint)을 말한다
Server
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 {
ServerSocket server = new ServerSocket(7777);
Socket socket = server.accept();
TCP 소켓 통신을 하기 위해 ServerSocket 객체를 생성한다
포트번호를 매개변수로 사용했다
accept() 메서드는 클라이언트에서 접속요청이 올 때까지 계속 기다렸다가
연결 요청이 오면 Socket 객체를 생성해서 클라이언트와의 통신에 사용한다
Client
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
public class TcpSocketClient {
public static void main(String[] args) throws IOException {
String serverIp = "localhost";
Socket socket = new Socket(serverIp, 7777);
클라이언트에서는 소켓을 생성해서 서버에 연결을 요청한다
IP주소와 포트번호를 매개변수로 사용했다
내 컴퓨터로 테스트해보기 위해 localhost로 했다
Server
System.out.println("접속한 클라이언트 주소 : " + socket.getInetAddress());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("비투비 임현식 신곡발매 노래 짱 좋음");
dos.close();
server.close();
}
}
클라이언트 연결되었으니까 접속한 클라이언트 정보를 확인해봤다
클라이언트에 writeUTF()로 메세지를 보내기 위해서 getOutputStream() 으로 OutputStream 객체를 얻어서 DataOutputStream 객체를 생성했다
사용이 완료된 객체들을 닫아주었다
Client
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("서버로부터 받은 메시지 : " + dis.readUTF());
dis.close();
socket.close();
}
}
서버에서 보내온 메시지를 받기 위해서 getInputStream()으로 InputStream 객체를 얻어서 DataInputStream 객체를 생성했다
readUTF()로 메시지를 읽고 사용한 객체들을 닫아주었다