Basic/Java
Java - networking
HappyWeasel
2019. 6. 9. 01:50
Server
package socket_test;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class server {
public static void main(String[] arg) {
//서버의 소켓 선언
ServerSocket serverSocket = null;
//서버에 연결 된 클라이언트 정보를 저장하기 위해 선언
Socket socket = null;
InputStream inputStream = null;
DataInputStream datainputstream = null;
OutputStream outputStream = null;
DataOutputStream dataoutStream = null;
try {
serverSocket = new ServerSocket(9000);
//서버 소켓 포트 9000 선언
System.out.println("Client accept ready");
socket = serverSocket.accept();
//서버와의 연결을 위해 소캣 오픈(대기중...)
//클라이언트에서 연결 되면 클라이언트 정보를 리턴
System.out.println("Client Acccept!");
System.out.println("socket : " + socket);
//받을 데이터 소켓에 연결
inputStream = socket.getInputStream();
datainputstream = new DataInputStream(inputStream);
//보내줄 데이터 소켓에 연결
outputStream = socket.getOutputStream();
dataoutStream = new DataOutputStream(outputStream);
while(true) {
String clientMessage = datainputstream.readUTF();
System.out.println("clientMessage : " + clientMessage);
if (clientMessage.equals("STOP")) break;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//소켓들을 반납하기 위해 사용.
if(datainputstream != null) datainputstream.close();
if(inputStream != null) inputStream.close();
if(dataoutStream != null) dataoutStream.close();
if(outputStream != null) outputStream.close();
if(socket != null) socket.close();
if(serverSocket != null) serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
결과
Client accept ready
Client Acccept!
socket : Socket[addr=/127.0.0.1,port=54165,localport=9000]
clientMessage : hi
Client
package socket_test;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class client {
public static void main(String[] arg) {
Socket socket = null;
// 보낼 데이터
OutputStream outputStream = null;
DataOutputStream dataOutputStream = null;
// 받을 데이터
InputStream inputStream = null;
DataInputStream datainputStream = null;
// 사용자에게 데이터를 입력 받기 위한 Scanner 선언
Scanner scanner = null;
try {
//접속할 소켓 정보 IP, Port
socket = new Socket("localhost", 9000);
//소켓에 보낼 데이터로 선언
outputStream = socket.getOutputStream();
dataOutputStream = new DataOutputStream(outputStream);
//소켓에 받을 데이터로 선언
inputStream = socket.getInputStream();
datainputStream = new DataInputStream(inputStream);
//스캐너 선언
scanner = new Scanner(System.in);
while (true) {
System.out.println("Message : ");
//메세지 입력 받음.
String outMessage = scanner.nextLine();
//UTF-8 형식으로 입력 받은 데이터 쓰기
dataOutputStream.writeUTF(outMessage);
// 데이터 보내기
dataOutputStream.flush();
// UTF-8 형식으로 데이터 받아오기.
String inMessage = datainputStream.readUTF();
// 데이터 출력.
System.out.println("inMessagae : " + inMessage);
if(outMessage.equals("STOP")) break;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dataOutputStream != null) dataOutputStream.close();
if (outputStream != null) outputStream.close();
if (datainputStream != null) datainputStream.close();
if (inputStream != null) inputStream.close();
if (socket != null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
결과
Message :
hi