일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래밍
- 객체지향프로그래밍
- Project
- javascript
- UI
- web
- 공부
- squery
- 웹
- Java
- 주말이다..
- CSS
- 테이블
- Oracle
- 객제지향프로그래밍
- ERWin
- sql
- 오라클
- 공부를열심히
- 객제지향
- 코딩
- html
- 웹프로그래밍
- orcle
- 데이터베이스
- DB
- 자바
- 객체지향
- 프로젝트
- jsp
Archives
- Today
- Total
햄찌개
JAVA -TCP/IP 통신 1:1 본문
Server에 Client가 연결되면 "어서오세요." 전송 예제
Server
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] args) throws IOException {
//Tcp소켓 통신을 하기 위한 ServerSocket객체 생성
ServerSocket server = new ServerSocket(7777);// ~1024까지는 쓰면안됨.
System.out.println("서버가 접속을 기다립니다....");
//accept()메서드 Client에서 연결 요청이 올때까지 계속 기다린다.
//연결 요청이 오면 Socket객체를 생성해서 Client의 Socket과 연결한다.
Socket socket = server.accept();
//-----------------------------------------------------------------------------------
// 이 이후는 클라이언트와 연결된 후의 작업을 진행하면된다.
System.out.println("접속한 클라이언트 정보");
System.out.println("주소 : "+socket.getInetAddress());
//Client의 메세지 보내기
//OutputStream객체를 구성하여 전송한다.
//접속한 Socket의 getOutputStream()메서드를 이용하여 구한다.
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeUTF("어서오세요....");//메세지 보내기
System.out.println("메세지를 보냈습니다.");
dos.close();
server.close();
}
}
Client
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class TcpClient {
public static void main(String[] args) throws IOException {
String serverIp = "192.168.45.25";
//자기 자신 컴퓨터를 나타내는 방법
//Ip:127.0.0.1
//컴 이름 : localhost
System.out.println(serverIp+" 서버에 접속 중입니다...");
//소켓 생성해서 서버에 연결을 요청한다.
Socket socket = new Socket(serverIp,7777);
//연결이 되면 이후의 명령이 실행된다.
System.out.println("연결되었습니다.");
//서버에서 보내온 메시지 받기
//메시지를 받기 위해 InputStream객체를 생성한다.
//Socket의 getInputStream()메서드 이용
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
//서버로부터 받은 메시지 출력하기
System.out.println("받은 메시지 : "+dis.readUTF());
System.out.println("연결종료...");
dis.close();
socket.close();
}
}
1대1 채팅
Server
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer2 {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(7777);
System.out.println("서버 준비완료 ....");
Socket socket =server.accept();//클라이언트와 통신이 될때까지 대기
System.out.println(socket.toString());
Sender sender = new Sender(socket);
Receiver receiver = new Receiver(socket);
sender.start();
receiver.start();
}
}
Client
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient2 {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("localhost",7777);
System.out.println("서버에 연결되었습니다...");
System.out.println(socket);
Sender sender = new Sender(socket);
Receiver receiver = new Receiver(socket);
sender.start();
receiver.start();
}
}
Sender
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;
/**
* 소켓을 통해서 메시지를 보내는 역할을 담당한다.
*/
public class Sender extends Thread {
private Socket socket;
DataOutputStream dos;
private String name;
public Sender(Socket socket) {
this.socket = socket;
name = "[" + socket.getInetAddress() + " : " + socket.getPort() + "]";
try {
dos = new DataOutputStream(socket.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
Scanner scan = new Scanner(System.in);
while (dos != null) {
try {
dos.writeUTF(name + " >>> " + scan.nextLine());
} catch (Exception e) {
e.printStackTrace();
}
}
scan.close();
}
}
Receiver
import java.io.DataInputStream;
import java.net.Socket;
/**
* 이 클래스는 소켓에서 메시지를 받아서 화면에 출력하는 역할을 담당한다.
* @author PC-17
*/
public class Receiver extends Thread {
private Socket socket;
private DataInputStream dis;
public Receiver(Socket socket) {
this.socket=socket;
try {
dis=new DataInputStream(socket.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (dis!=null) {
try {
System.out.println(dis.readUTF());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
'고급 JAVA' 카테고리의 다른 글
JAVA UDP 통신 (0) | 2020.10.15 |
---|---|
JAVA- TCP/IP - 멀티 채팅 프로그램 (0) | 2020.10.15 |
JAVA- javaNetWork (0) | 2020.10.13 |
JAVA - Log4j (0) | 2020.10.08 |
JAVA - Singleton (0) | 2020.10.08 |