클라이언트쪽 기본 코드 간단한 기본 예제이다.
package sec07_exam02_data_read_write;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
public class ClientExample {
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket();
System.out.println("[연결 요청]");
socket.connect(new InetSocketAddress("localhost",5001));//연결요청함.
System.out.println("[연결 성공]");
//서버로 데이터 보내기
byte[] bytes = null;
String message = null;
OutputStream os = socket.getOutputStream();
message = "Hello Server";
bytes = message.getBytes("UTF-8");
os.write(bytes);
os.flush();
System.out.println("[데이터 보내기 성공]");
//서버에서 데이터 받기
InputStream is = socket.getInputStream();
bytes = new byte[100];
int readByteCount = is.read(bytes);
message = new String(bytes,0,readByteCount,"UTF-8");
System.out.println("[데이터 받기 성공]: "+message);
is.close();
os.close();
//socket.close(); 어차피 밑에서 닫게 되어있음.
}catch(Exception e) {
e.printStackTrace();
}
if(!socket.isClosed()) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
서버 쪽 기본 코드이다.
package sec07_exam02_data_read_write;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerExample {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("localhost",5001));
while(true) {
System.out.println("[연결 기다림]");
Socket socket = serverSocket.accept(); //클라이언트의 연결요청을 수락하는 역할. 클라이언트가 연결요청하기 전까지는 대기 상태임. blocking
InetSocketAddress isa = (InetSocketAddress)socket.getRemoteSocketAddress();
System.out.println("[연결 수락함]" +isa.getHostName());
//데이터 받고 보내기//클라이언트에서 데이터를 받음.
byte[] bytes = null;
String message = null;
InputStream is = socket.getInputStream();
bytes = new byte[100];
int readByteCount = is.read(bytes);//read는 클라이언트가 데이터를 보내기 전까지 대기상태임.
message = new String(bytes,0,readByteCount,"UTF-8");
System.out.println("[데이터 받기 성공]: "+message);
//데이터 보내기.
OutputStream os = socket.getOutputStream();
message = "Hello Client";
bytes = message.getBytes("UTF-8");
os.write(bytes);
os.flush();
System.out.println("[데이터 보내기 성공]");
is.close();
os.close();
socket.close(); //연결을 끊겠다는 뜻.
}
} catch (IOException e) {
e.printStackTrace();
}
if(!serverSocket.isClosed()) {
try {
serverSocket.close(); //닫아준다.
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
반응형
'Java' 카테고리의 다른 글
[Java] 내 ip와 도메인 ip 가져오기 - Java code (0) | 2020.12.18 |
---|---|
[Java] 점프 투 자바 (0) | 2020.12.18 |
[Java] 자바 네트워킹 강의 (0) | 2020.12.18 |
[Java] 자바 예제모음 사이트 (0) | 2020.12.17 |
[Java] JVM의 메모리구조(가비지 컬렉션)/ 자바 메모리 구조 (0) | 2020.12.17 |