- 웹 소켓:
A 와 B가 연결을 할려 그럼
A ip, A port, B ip, B port 가 필요
A는 connect 상태
B는 listen 상태였다가 전송이 오면 accept 상태가 됨(통신이 연결됨)
send / receive
A close, B close
- 일방형 통신 프로그램(무전기)
서버
package tcp;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
//전화 받는쪽
public static void main(String[] args) throws IOException {
//1024이하의 포트 번호는 고정 포트기 때문에 사용X, 그외 아무 포트 사용 가능
ServerSocket ss = new ServerSocket(7777); //listen, 해당 포트로 오는 모든 연결을 열어놈
System.out.println("전화 준비 완료");
while(true) {
System.out.println("전화 기다리는중...");
Socket s = ss.accept(); //accept, s에는 전화온 사람의 소켓이 들어있음
System.out.println(s.getInetAddress()+ "로 부터 전화가 옴");
//byte단위로 보내는 파일 전송
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF("여보세요~");
//getOutputStream 상대방쪽으로 보냄
dos.close();
s.close();
}
}
}
클라이언트
package tcp;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket("127.0.0.1", 7777); //127.0.0.1 이 ip 주소로 7777 포트로 접속
DataInputStream dis = new DataInputStream(s.getInputStream());
//getInputStream: 상대방으로부터 받음
System.out.println("상대방이 한말: " + dis.readUTF());
dis.close();
s.close();
System.out.println("전화 끊어짐");
}
}
서버 실행 후 클라이언트 실행할 때마다 통신이됨
파워쉘 하나 띄워서 java 패키지명.파일명 으로 서버 열고
또 하나 띄어서 java 패키지명.파일명 으로 클라이언트 실행시 통신됨
'[back-end] > 자바-소켓' 카테고리의 다른 글
소켓프로그래밍 - 멀티 유저 채팅 프로그램 (0) | 2021.01.02 |
---|---|
소켓프로그래밍 - 양방향 소켓 (0) | 2021.01.01 |
소켓프로그래밍 - 단방향 소켓 프로그램 (0) | 2021.01.01 |
program, process, thread (0) | 2020.12.28 |
웹 프로그램 (0) | 2020.12.24 |