Network ( Ⅰ )
[ 서버프로그램 ]
1. server
- 클라이언트의 접속을 받아들이는 프로그램
- 서버프로그램의 작성단계
1) ServerSocket 생성(포트번호필요)
2) 클라이언트의 접속대기
3) 클라이언트가 접속해오면 접속을 허용하고 클라이언트와 데이터를 주고받는 Socket생성(accept()메소드)
4) Socket을 통해 클라이언트와 데이터 주고 받기
5) 접속종료(소켓닫기)
ex> MyServer.java
package test01.net;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
ServerSocket server=null;
Socket sock=null;
try{
//1.서버소켓 생성하기
server=new ServerSocket(3000);
System.out.println("클라이언트의 접속대기중");
//2.클라이언트의 접속을 대기하고 클라이언트가 접속해오면
//이를 받아들이고 Socket을 생성하기
sock=server.accept();
System.out.println("클라이언트가 접속했어요!");
//상대방으로부터 데이터를 받기위한 스트림객체 얻어오기
InputStream in=sock.getInputStream();
byte b[]=new byte[1024];
//상대방이 보내온 데이터를 읽어와 b배열에 저장.n에는
//읽어온바이트수크기가 저장된다.
int n=in.read(b);
//b배열의 0번째부터 전송한 크기만큼만 String객체로 만들기
String ss=new String(b,0,n);
//전송받은 문자열을 화면에 출력하기
System.out.println("클라이언트가 보내온 메시지:"+ ss);
//4. 접속종료(소켓닫기)
sock.close();
server.close();
}catch(IOException ie){
System.out.println(ie.getMessage());
}
System.out.println("프로그램이 종료합니다.");
}
}
[ 클라이언트 프로그램 ]
2. client
- 서버에 접속하는 프로그램
- 클라이언트 프로그램 작성단계
1) Socket을 이용하여 서버에 접속(ip주소,포트번호 필요)
2) Socket을 이용하여 데이터 주고받기(이때 stream을 사용한다.)
3) 접속끊기(소켓종료)
ex> MyClient.java
package test01.net;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class MyClient {
public static void main(String[] args) {
Socket sock=null;
try{
sock=new Socket("192.168.0.2",3000);
System.out.println("서버에 접속성공!");
String msg="반가워요 서버~";
//상대방에 데이터를 보내기위한 스트림객체 얻어오기
OutputStream os=sock.getOutputStream();
//String객체를 바이트배열로 변환해서 데이터 보내기->os가 1바이트처리
//스트림이므로
os.write(msg.getBytes());
os.flush();//버퍼가 다 차지 않아도 데이터 보내라.
System.out.println("메시지 보내기 성공!");
//소켓닫기
sock.close();
}catch(UnknownHostException ue){
System.out.println(ue.getMessage());
}catch(IOException ie){
System.out.println(ie.getMessage());
}
}
}