Java学习之socket网络编程篇
2020-08-10 01:31
1091 查看
Java学习之socket网络编程篇
0x00 前言
在一些工具开发中,最离不开的可能就是网络编程了,例如目录扫描器、端口扫描、包括exp这些其实都是依赖于socket。就拿简单的exp来说其实就是已经构造好的一段payload,然后使用socket发送网络请求过去,然后利用漏洞获取到一个shell。
0x01 socket类概述
Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。
注意事项:
1. 服务端程序,需要事先启动,等待客户端的连接。 2. 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。
在Java中,提供了两个类用于实现TCP通信程序:
- 客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。
- 服务端:java.net.ServerSocket 类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。
0x02 Socket使用
查看构造方法:
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) 将此套接字连接到服务器。
0x03 ServerSocket使用
构造方法:
ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
常用方法:
accept() 侦听并接受到此套接字的连接。 bind(SocketAddress endpoint, int backlog) 将 ServerSocket 绑定到特定地址(IP 地址和端口号)。 void close() 关闭此套接字
0x04 Socket 代码实例
客户端代码:
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(); }
使用serversocket类实例化一个对象,使用accept接收套接字的连接,连接时候会生成新的套接字,使用新的套接字获取套接字输入流,读取客户端传入的数据进行打印。
0x05 结尾
这篇文章比较短,不知道该写点什么案例来做演示。JaveSE的部分暂时也告一段落了,开始步入JavaWeb部分。
相关文章推荐
- 黑马程序员-JAVA学习之TCP网络编程篇,Socket使用
- 18天Java学习---Java的Socket网络编程以及多线程
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- java网络编程Socket学习(二)
- 【Java学习笔记】基于Socket的TCP网络编程和UDP网络编程
- java 学习笔记——网络(Socket)
- <JAVA学习笔记9>——网络之Socket的简单介绍
- java网络编程---socket用法详解(学习心得)
- java网络编程Socket学习(一)
- java学习之:网络socket
- 菜猪的JAVA 网络编程学习之Socket用法详解(上)
- java学习之路——基于TCP的Socket网络通信实例
- Java学习总结12——网络1(Java Socket参数详解)
- java学习之路——基于UDP的Socket网络通信实例
- java网络编程学习笔记(三):ServerSocket详解
- java网络编程Socket学习(二)
- 【幻化万千戏红尘】qianfengDay23-java基础学习:网络编程、TCP IP协议、端口Socket、ServerSocket
- Java学习之网络编程--InetAddress,InetSocketAddress
- java学习笔记---Socket应用网络通信
- Java学习笔记-网络编程Socket简易C/S应用