2016.09.07. 스물두 번째 수업
오늘의 수업내용
네트워크 통신 (Tcp/Ip Client) 구현
- 2개의 thread를 실행한다.
1. Server에 Message를 보낸다. (Server가 Message를 받아서 다른 곳으로 보낸다.)
(ClientSender) DataOutputStream, Socket, String name(보내는 사람)
Socket.getOutputStream() -> 서버에 메시지를 보낸다. (DataOutputStream 도움필요!)
2. Server에서 보낸 Message를 받는다.
(ClientReceiver) DataInputStream, socket
socket.getInputStream() -> 서버에서 보낸 메시지를 받는다. (DataInputStream 도움필요!)
예제
package com.javalesson.ch21network;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
class ClientSender extends Thread {
String name;
DataOutputStream out; //Socket의 접속을 out이 가진다.
public ClientSender(Socket socket,String name) {
this.name = name;
try {
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException e){e.printStackTrace();
}
}//생성자
@Override
public void run() {
Scanner scan = new Scanner(System.in); //console창 입력
try {
if(out!=null){ //초기 접속 이후 실행되지 않는다.
out.writeUTF(name);
}
while(out!=null){
out.writeUTF(name+":"+scan.nextLine());
}//server로 문자를 보내는 메소드
} catch (IOException e){e.printStackTrace();
}
}
}//ClientSender
class ClientReceiver extends Thread {
DataInputStream in; //socket의 입력을 가진다.
public ClientReceiver(Socket socket) {
try{
in = new DataInputStream(socket.getInputStream());
} catch (IOException e){e.printStackTrace();
}
}//생성자
@Override
public void run() {
while(in!=null){
try {
System.out.println(in.readUTF());
} catch (IOException e){e.printStackTrace();
}
}
}
}//ClientReceiver
public class L01TcpIpClient {
public static void main(String[] args) {
Socket socket;
try {
socket = new Socket("172.30.5.203",5000);
new ClientSender(socket,"이름").start();
new ClientReceiver(socket).start();
} catch (UnknownHostException e){e.printStackTrace();
} catch (IOException e){e.printStackTrace();
}
}//main
}//class
※console 출력내용
여러명이 접속하면 채팅이 가능하다!
(다음 게시물로 업로드할 Tcp/Ip Server를 실행해야지 접속가능!!)
'IT story > Java' 카테고리의 다른 글
ex) 네트워크통신(채팅창 생성) (0) | 2016.09.14 |
---|---|
D+23 네트워크통신(Tcp/Ip Server) (0) | 2016.09.08 |
D+21 Text Editor(메모장 만들기) (0) | 2016.09.06 |
D+20 awt(text & text editor) (0) | 2016.09.06 |
D+19 Thread(쓰레드) (0) | 2016.09.01 |