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(); // 서버 닫기
}
}
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();
}
}