socket网络编程 java_Java学习之socket网络编程篇

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部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值