SW공부 41일차

Guryena·2023년 2월 28일
0

CS

목록 보기
34/34

1.서버 클라이언트 일대일 채팅 프로그램을 짜시오.

  • 서버
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

	public static void main(String[] args) {
		ServerSocket serverSocket = null; // Create Server socket
		Socket socket = null; // Create Client socket

		try {
			serverSocket = new ServerSocket(7777); // 7777=port number
			socket = serverSocket.accept(); // Accept to Server

			Sender sender = new Sender(socket);
			Receiver receiver = new Receiver(socket);

			sender.start();
			receiver.start();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

public class Sender extends Thread {
	Socket socket;
	DataOutputStream out;
	String name;

	public Sender(Socket socket) {
		this.socket = socket;

		try {
			out = new DataOutputStream(socket.getOutputStream());
			name = "[" + socket.getInetAddress() + ":" + socket.getPort() + "]";
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void run() {
		Scanner scanner = new Scanner(System.in);
		while (out != null) {
			try {
				out.writeUTF(name + scanner.nextLine());
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

}
  • 클라이언트

import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

public class Receiver extends Thread {
	Socket socket;
	DataInputStream in;
	String name;

	public Receiver(Socket socket) {
		this.socket = socket;

		try {
			in = new DataInputStream(socket.getInputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void run() {
		Scanner scanner = new Scanner(System.in);
		while (in != null) {
			try {
				System.out.println(in.readUTF()); // UTF is don't crash korea

			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

}
import java.net.Socket;

public class TcpClient {

	public static void main(String[] args) {
		String serverIP = "127.0.0.1"; // It's myself IP
		try {
			Socket socket = new Socket(serverIP, 7777);

			System.out.println("Connect Server");

			Sender sender = new Sender(socket);
			Receiver receiver = new Receiver(socket);

			sender.start();
			receiver.start();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

2. Socket 에 대하여 설명하시오.

소켓은 특정한 파이프의 끝, 파이프 이음쇠 또는 위생 기구를 수용하기 위해 확장한 것으로, 또 다른 파이프의 끝이나 파이프 이음쇠을 가리킨다. 또한 소켓(socket)은 통신선 또는 전기선, 전구 따위를 끼워 넣어 연결선과 접속하게 하는 연결기구를 가리킨다.

0개의 댓글