자바 학습 의 socket 네트워크 프로 그래 밍 편
선언
일부 도구 개발 에서 가장 떨 어 질 수 없 는 것 은 네트워크 프로 그래 밍 일 수 있 습 니 다. 예 를 들 어 디 렉 터 리 스캐너, 포트 스 캔, exp 등 은 모두 socket 에 의존 합 니 다.간단 한 exp 로 말하자면 이미 구 성 된 payload 입 니 다. 그리고 socket 으로 네트워크 요청 을 보 내 고 구멍 을 이용 하여 셸 을 가 져 옵 니 다.
0x 01 socket 클래스 개요
Socket 류: 이 종 류 는 클 라 이언 트 소켓 을 실현 합 니 다. 소켓 은 두 장치 간 의 통신 점 을 말 합 니 다.
주의사항:
1. 服务端程序,需要事先启动,等待客户端的连接。
2. 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。
자바 에 서 는 TCP 통신 프로그램 을 실현 하 는 두 가지 종 류 를 제공 합 니 다.
클 라 이언 트: java. net. Socket 클래스 표시.Socket 대상 을 만 들 고 서버 에 연결 요청 을 보 내 며 서버 에서 요청 에 응답 합 니 다. 둘 은 연결 을 만들어 통신 을 시작 합 니 다
서버: java. net. server Socket 클래스 표시.ServerSocket 대상 을 만 드 는 것 은 서 비 스 를 시작 하고 클 라 이언 트 의 연결 을 기다 리 는 것 과 같 습 니 다
0x 02 소켓 사용
구조 보기:
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定口号。
구조 방법 인 스 턴 스:
Socket client = new Socket("127.0.0.1", 6666);
멤버 방법:
getInputStream()
返回此套接字的输入流
getOutputStream()
返回此套接字的输出流
void bind(SocketAddress bindpoint)
将套接字绑定到本地地址。
void close()
关闭此套接字。
void connect(SocketAddress endpoint)
将此套接字连接到服务器。
0x 03 ServerSocket 사용
구조 방법:
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
상용 방법:
accept()
侦听并接受到此套接字的连接。
bind(SocketAddress endpoint, int backlog)
将 ServerSocket 绑定到特定地址(IP 地址和端口号)。
void close()
关闭此套接字
0x 04 소켓 코드 인 스 턴 스
클 라 이언 트 코드:
public static void main(String[] args) throws IOException {
Socket client = new Socket("127.0.0.1",8080);
OutputStream os = client.getOutputStream();
os.write("nihao".getBytes());
os.close();
client.close();
}
socket 대상 을 만 들 고 구조 방법 으로 인 자 를 입력 합 니 다. getOutputStream 을 사용 하여 소켓 출력 흐름 을 가 져 온 다음 문 자 를 씁 니 다.이 문 자 를 전송 할 때 byte 형식 으로 변환 해 야 합 니 다.
서버:
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(8888);
System.out.println("监听中");
Socket server = ss.accept();
InputStream is = server.getInputStream();
byte[] b = new byte[1024];
int len = is.read(b);
String msg = new String(b,0,len);
System.out.println(msg);
is.close();
server.close();
}
server socket 류 를 사용 하여 대상 을 예화 하고 accept 수신 소켓 의 연결 을 사용 합 니 다. 연결 할 때 새로운 소켓 을 생 성 합 니 다. 새로운 소켓 을 사용 하여 소켓 입력 흐름 을 가 져 오고 클 라 이언 트 가 들 어 온 데 이 터 를 읽 어 인쇄 합 니 다.
마무리
이 글 은 비교적 짧 아서 어떤 사례 를 써 서 시범 을 보 여야 할 지 모르겠다.JaveSE 부분도 잠시 일 단락 되 고 JavaWeb 부분 으로 들 어가 기 시작 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.