임시 메모장/메모장1
1:1 채팅
NOOWGNAJ
2022. 6. 28. 23:09
반응형
SERVER
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) {
ServerSocket ss = null;
Socket sc = null;
InputStream is = null;
OutputStream os = null;
int port = 9091;
Scanner in_msg = null;
String server_msg = null;
String message = null;
String user_id = null;
String exit_msg = null;
try {
ss = new ServerSocket(port);
System.out.println("서버에서 사용하실 아이디를 입력해주세요.");
in_msg = new Scanner(System.in);
user_id = in_msg.nextLine();
System.out.println("서버 연결 대기중..");
sc = ss.accept();
System.out.println("연결 확인");
is = sc.getInputStream();
os = sc.getOutputStream();
byte data[] = new byte[1024];
while (true) {
int n = is.read(data);
message = new String(data,0,n);
if(message.indexOf(":") == -1 ) {
System.out.println(message + "님이 퇴장하셨습니다.");
System.exit(0);
}
else {
System.out.println(message);
}
System.out.println("내용 입력");
server_msg = "[SERVER - " + user_id + "] : " + in_msg.nextLine();
os.write(server_msg.getBytes());
os.flush();
}
}catch(Exception e) {
System.out.println("SERVER ERROR");
}
}
}
CLIENT
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
String ip = "192.168.50.62";
int port = 9091;
Scanner sn = null;
Scanner sn1 = null;
Socket sc = null;
OutputStream os =null;
InputStream is = null;
String userid = "";
String msg ="";
try {
sc = new Socket(ip, port);
sn1 = new Scanner(System.in);
System.out.println("채팅에 사용하실 아이디를 입력해주세요.");
userid = sn1.nextLine();
os = sc.getOutputStream();
is = sc.getInputStream();
for (;;) { //지속적으로 소켓에 계속 접속되도록 하는 형태
sn = new Scanner(System.in);
System.out.println("내용 입력");
msg = "[CLIENT - " + userid+"] : "+sn.nextLine();
if((msg.indexOf("exit"))!=-1) {
os.write(userid.getBytes());
System.out.println("채팅이 종료되었습니다.");
System.exit(0);
}
else {
os.write(msg.getBytes());
os.flush();
byte[] data = new byte[1024];
int n = is.read(data);
String message = new String(data, 0, n);
System.out.println(message);
}
}
} catch (Exception c) {
System.out.println(c.getMessage());
if ((c.getMessage()) != null) {
System.out.println("현재 접속 장애가 발생함");
}
}
finally { //클라이언트가 접속 종료 시 해당 소켓 및 각종 Stream, Scanner등을 모두 종료
try {
sc.close();
os.close();
is.close();
sn.close(); //접속 종료 시 체크
} catch (Exception e) {
}
}
}
}
반응형