본문 바로가기

IT일반과목/java

자바 네트워크 TCP통신 문제 맞추기


--------------------------------------------------------------------------------------------

package jongkyu.chat.model;


import java.io.DataInputStream;


import java.io.DataOutputStream;


import java.io.IOException;


import java.io.InputStream;


import java.io.OutputStream;


import java.net.ServerSocket;


import java.net.Socket;


import java.util.Scanner;


public class ServerClass2 extends Thread {


Socket clinetSocket = null;


InputStream in = null;


OutputStream out = null;


DataOutputStream dos = null;


DataInputStream dis = null;


Scanner sc = new Scanner(System.in);


int num = 0;


// private HashMap<String,Member> member = new HashMap<String,Member>();


// 메인에는 넣어줄꺼 보내줄꺼 해보겠다.


public void main() {


try {


ServerSocket serverSocket = new ServerSocket(7777);// 포트를 열어주었다, 소켓생성


System.out.println("대기중...");


// 클라이언트 접속 대기 accept();


clinetSocket = serverSocket.accept();// 접속을 기다리고 있을것이다.


System.out.println(clinetSocket.getInetAddress() + "에서 접속했습니다.");


// 서버에서 클라이언트로 메시지를 전송할 Thread 생성


in = clinetSocket.getInputStream();


out = clinetSocket.getOutputStream();


dis = new DataInputStream(in);


dos = new DataOutputStream(out);


// 준비끝


dos.writeUTF("접속에 성공하셨군요!! 퀴즈가 있습니다.");


dos.writeUTF("Quiz를 내보도록 하지요");


dos.writeUTF("우선 그전에! 퀴즈를 풀 준비가 되어있는지 확인해보겠습니다.");


this.start();// 내자신의 멀티스레드 실행하겠다, 상속받은상태기 때문에 가능하다.


while (true) {


String[] select = { "제이름은 뭘까요?", "[넌센스]머리가 세 개면??", "알파벳을 아스키코드값으로 변경한후 모두 더한 값은?" };


String[] answer = { "이윤수", "헤드셋", "734" };


dos.writeUTF(select[num]);


String answercli = dis.readUTF();


if (answercli.equals(answer[num])) {


dos.writeUTF("딩동댕동");


}

else {

System.out.println("바보다 에러출력이다!!");

return;

}


num++;


}


} catch (IOException e) {


// TODO Auto-generated catch block


e.printStackTrace();


} finally {


try {


in.close();


out.close();


clinetSocket.close();


} catch (IOException e) {


// TODO Auto-generated catch block


e.printStackTrace();


}


}


}


}


-------------------------------------------------------------------------
package jongkyu.chat.model;

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class ClientClass extends Thread{
DataInputStream dis=null;
@Override
public void run() {//this.start받아오는거 run에 작성한다.
while(true) {
try {
System.out.println("[서버] : "+dis.readUTF());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
break;
} catch(Exception e) {
e.printStackTrace();
break;
}
}

}


public void main() {
String severIP = "localhost";//192.168.30.6//7777
int serverPort=7777;
Socket socket = null;
InputStream in =null;
OutputStream out = null;
Scanner sc = new Scanner(System.in);
try {
socket = new Socket(severIP, serverPort);
in = socket.getInputStream();
out = socket.getOutputStream();
dis = new DataInputStream(in);
DataOutputStream dos = new DataOutputStream(out);
this.start();//받아올것이다.서버도똑같이 내자신클래스에있는 멀티스레드 사용하겠다.
while(true) {

String data = sc.nextLine();
dos.writeUTF(data);

}

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}


}

-----------------------------------------------------------------------
package jongkyu.run;

import jongkyu.chat.model.ServerClass2;

public class SerRun {
public static void main(String[] args) {
ServerClass2 sc = new ServerClass2();
sc.main();
}
}

---------------------------------------------------------------------
package jongkyu.run;

import jongkyu.chat.model.ClientClass;

public class CliRun {
public static void main(String[] args) {
ClientClass cc = new ClientClass();
cc.main();
}
}


'IT일반과목 > java' 카테고리의 다른 글

자바 네트워크 다중접속 과제  (2) 2018.08.12
쓰레드2 (학원수업)  (0) 2018.08.10
쓰레드1 (학원수업)  (0) 2018.08.10
네트워크 수업3 (야구게임) (과제)  (0) 2018.08.09
네트워크 수업2  (0) 2018.08.09