Lonely Snowman
 

TCP 소켓 서버 / 클라이언트 예제

소켓이란? 두 호스트 간에 통신을 하기 위한 양 끝단(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()로 메시지를 읽고 사용한 객체들을 닫아주었다