JAVA/Network

간단한 서버와 클라이언트 데이터 송/수신 하기

DesignatedRoom 2020. 10. 14. 13:38

아래의 내용을 기반으로 구현을 하도록 한다.

designatedroom87.tistory.com/177?category=896469

 

간단한 서버 클라이언트 만들기

Simpleserver.java import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; // 1. 간단한 서버 만들기 // 익스플로러 창에 localhost:5555 를 치고 실행결과 창을 확인 public class..

designatedroom87.tistory.com

<Simpleserver.java>

 

<SimpleClient.java>

 

아래는 순서대로, 서버와 클라이언트를 각 각 실행한다.

아래는 처음에 서버를 실행하고 난 이후의 결과이다.

아래는 클라이언트를 실행하고 나서의 결과이다.

아래는 다시 서버에서의 실행결과를 본 것이다.

클라이언트가 서버에 접속했으니, 그 결과를 다시보기 위함이다.

 

소스 파일

SimpleClient.java
0.00MB
Simpleserver.java
0.00MB

 

 

 

 

다른 예로 채팅 

<ChatServer.java>

소스 코드

더보기
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServer 
{
	public static void main(String[] args) throws IOException
	{
		ServerSocket serverSock=new ServerSocket(5555);
		
		System.out.println("챗팅 서버 Starting.....");
		System.out.println("접속대기중");
		Socket clientSock = serverSock.accept();
		System.out.println(clientSock.getInetAddress()+"사용자가 접속했습니다.");
		System.out.println("챗팅을 시작합니다.");
		
		OutputStream os = clientSock.getOutputStream();
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os)));
		
		InputStream is = clientSock.getInputStream();
		BufferedReader in = new BufferedReader(new InputStreamReader(is));
		
		BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
		int i = 0;
		
		while(true) 
		{
			String out_msg = keyboard.readLine();
			out.println(out_msg);
			out.flush();
			
			String in_msg = in.readLine();
			if(in_msg != null) {System.out.println(in_msg);}
			System.out.println(i++);
			if(i > 1000) {i = 0;}
		}
	}
}

 

<ChatClient.java>

소스 코드

더보기
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

public class ChatClient 
{
	public static void main(String[] args) throws Exception, IOException 
	{
		Socket socket = new Socket("127.0.0.1",5555);
		System.out.println("챗 서버에 접속했습니다.");
		System.out.println("챗팅을 시작합니다.");
		
		OutputStream os = socket.getOutputStream();
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os)));
		
		InputStream is = socket.getInputStream();
		BufferedReader in = new BufferedReader(new InputStreamReader(is));
		
		BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
		
		while(true) 
		{
			String out_msg = keyboard.readLine();
			out.println(out_msg);
			
			String in_msg = in.readLine();
			if(in_msg != null) {System.out.println(in_msg);}
		}
	}
}

 

 

지금까지는 단 방향 통신만 가능한데, 아래의 내용에서 양 방향 통신에 대해 다루기로 한다.

designatedroom87.tistory.com/195?category=896469

 

간단한 서버와 클라이언트 데이터를 thread를 이용하여 양방향 송/수신

아래의 내용을 이용해 thread로 처리해보자. designatedroom87.tistory.com/180?category=896469 간단한 서버와 클라이언트 데이터 송/수신 하기 아래의 내용을 기반으로 구현을 하도록 한다. designatedroom87.ti..

designatedroom87.tistory.com