🌞예제
🌟(EchoServer)예제1🌟
package exam01;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Arrays;
public class EchoServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(9001);
System.out.println(" ** 서버가 가동되었습니다. **");
while(true) {
Socket socket = server.accept();
System.out.println("클라이언트가 연결하였습니다.");
System.out.println("-----------------------------------------------------");
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte []data= new byte[100];
while(true) {
is.read(data);
String msg = new String(data);
if(msg.trim().equals("q!")) {
break;
}
os.write(data);
System.out.println("클라이언트로 수신한 데이터: " +msg + "다시 메아리 하였습니다.");
Arrays.fill(data, (byte)0);
}
System.out.println("클라이언트와 연결을 종료하였습니다.");
System.out.println("-------------------------------------------------------");
is.close();
os.close();
socket.close();
}
} catch(Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}
🌟(EchoClient)예제2🌟
package exam01;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class EchoClientGUI extends JFrame implements ActionListener {
JTextField jtf;
JTextArea jta;
Socket socket;
InputStream is;
OutputStream os;
public EchoClientGUI() {
try {
socket = new Socket("192.168.35.171", 9001);
is = socket.getInputStream();
os = socket.getOutputStream();
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
jtf = new JTextField(40);
jta = new JTextArea(80, 50);
JScrollPane jsp = new JScrollPane(jta);
JButton btnSend = new JButton("전송");
btnSend.addActionListener(this);
JPanel p = new JPanel();
p.add(jtf);
p.add(btnSend);
add(jsp, BorderLayout.CENTER);
add(p, BorderLayout.SOUTH);
setSize(600, 400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
class ClientThread extends Thread {
public void run() {
byte[] data = new byte[100];
while (true) {
try {
is.read(data);
String reMsg = new String(data);
jta.append(reMsg + "\n");
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}
}
Thread t = new ClientThread();
t.start();
}
@Override
public void actionPerformed(ActionEvent e) {
String msg = jtf.getText();
try {
os.write(msg.getBytes());
if (msg.equals("q!")) {
System.exit(0);
}
} catch (Exception ex) {
System.out.println("예외발생: " + ex.getMessage());
}
}
public static void main(String[] args) {
new EchoClientGUI();
}
}
🌞연습문제
👑(Client)연습문제1👑
package practice768;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Arrays;
import java.util.Scanner;
public class Practice06Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("192.168.35.171", 9001);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
Scanner sc = new Scanner(System.in);
String msg;
byte []data = new byte[100];
while (true) {
System.out.print("서버로 전송할 텍스트: ");
msg = sc.next();
os.write(msg.getBytes());
if (msg.equals("q!")) {
break;
}
is.read(data);
String reMsg = new String(data);
String msg_U = msg.toUpperCase();
System.out.println("서버로부터 전송된 텍스트: " + msg_U);
Arrays.fill(data, (byte)0);
}
System.out.println("통신을 종료하였습니다.");
is.close();
os.close();
socket.close();
} catch (Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}
👑(Server)연습문제2👑
package practice768;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Arrays;
import java.util.HashMap;
public class Practice06Server {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(9001);
System.out.println("서버프로그램입니다.");
while(true) {
Socket socket = server.accept();
System.out.println("연결되었습니다.");
System.out.println("-----------------------------------------------------");
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte []data= new byte[100];
while(true) {
is.read(data);
String msg = new String(data);
System.out.println("클라이언트가 전송한 텍스트: " +msg);
String msg_U = msg.toUpperCase();
if(msg.trim().equals("q!")) {
break;
}
os.write(data);
System.out.println("클라이언트가 보낸 텍스트: " +msg_U);
Arrays.fill(data, (byte)0);
}
System.out.println("클라이언트와 연결을 종료하였습니다.");
System.out.println("-------------------------------------------------------");
is.close();
os.close();
socket.close();
}
} catch(Exception e) {
System.out.println("예외발생: " + e.getMessage());
}
}
}