자바 학습 의 socket 네트워크 프로 그래 밍 편

2783 단어
자바 학습 의 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 부분 으로 들 어가 기 시작 했다.

    좋은 웹페이지 즐겨찾기