티스토리 뷰
반응형
import java.io.*;
import java.net.*;
class ClientThread extends Thread{
Socket socket; // 클라이언트 소켓
MultiServer server; // 서버 소켓
BufferedReader reader; // 입력 스트림
BufferedWriter writer; // 출력 스트림
String userMsg; // 메시지
String nickName; // 클라이언트 닉네임
/*
* 클라이언트 쓰레드 초기화
*/
public ClientThread(Socket userSocket, MultiServer mainServer) throws Exception{
socket = userSocket;
server = mainServer;
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
}
// Thread run 메소드
@Override
public void run(){
try {
while((userMsg=reader.readLine()) != null){
if (userMsg.startsWith("001")){ // Client List
nickName=userMsg.substring(3);
server.broadCast("002 new Client["+nickName+"]님 입장");
server.broadClientList();
} else if(userMsg.startsWith("002")){ // Chatting
server.broadCast("002 "+userMsg.substring(3));
} else {
} // if
} // while
} catch(SocketException se){ // Client Connection Exception
} catch(Exception e){
System.out.println("run:"+e);
} // try
closeClient();
}
// 메시지 전송
public void sendMessage(String server_message) {
try {
System.out.println("메시지 전송 :"+server_message);
writer.write(server_message+"\n");
writer.flush(); // 초기화(비워짐)
} catch(Exception e) {
System.out.println("sendMessage 예외처리 :"+e);
}
}
public void closeClient() {
try {
if(server!=null) server.deleteFromServer(this);
if(writer!=null) writer.close();
if(reader!=null)reader.close();
if(socket!=null)socket.close();
} catch(Exception e) {
System.out.println("closeClient:"+e);
}
}
}
채팅 서버 구축 후 클라이언트 쓰레드 부분 설정
반응형
'IT & programming > Java' 카테고리의 다른 글
| [JAVA] 논리 연산자 (0) | 2022.05.31 |
|---|---|
| 8/23 - 채팅 소스, 채팅 클라이언트 부분 (0) | 2012.08.23 |
| 8/23 - 채팅 소스, 서버 구축 (0) | 2012.08.23 |
| 8/22 - I/O, 스트림, IOEx 예제문제 (0) | 2012.08.22 |
| 8/21 - AWT, 로그인 예제, Adapter클래스 이용 (0) | 2012.08.21 |
댓글