Socket的简单使用

Socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合

通过在客户端构建socket对象 传入服务器端的Ip地址和端口号,可以将socket对象发送给服务端,服务端通过ServerSocket的accept方法获取到该对象,建立链接,通过IO流传输数据

简单示例

创建一个客户端类TCPClient

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket_client = new Socket("127.0.0.1", 8888);
        //两个参数分别为服务器端的ip地址和端口号
        OutputStream out_client = socket_client.getOutputStream();
        //通过socket构建一个输出流对象
        System.out.println("客户端:--------向服务器发送消息-------");
        out_client.write("你好,服务器!".getBytes());
        //将要发送的信息转换为字节数组后通过输出流发送给服务器

        InputStream in_client = socket_client.getInputStream();
        //通过socket构建一个输入流,用于接收服务器返回的数据
        byte[] getform_server = new byte[2048];
        //创建一个字节数组用于存储接收的数据
        int len = in_client.read(getform_server);
        //获取数据长度
        String s = String.valueOf(len);
        System.out.println("客户端:---------收到服务器回复:--------");
        String get = new String(getform_server);
        System.out.println(get);
        //打印从服务器接收到的内容
        System.out.println(s);

        socket_client.close();
        //关闭socket,释放资源
    }
}

创建一个server类

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8888);
        //构建一个ServerSocket对象,用于对接客户端的socket对象,构造方法中传入对应端口号
        Socket socket_server = server.accept();
        //获取客户端socket实例
        InputStream in_server = socket_server.getInputStream();
        //构建一个输入流用于接收客户端传入的数据
        byte[] getfrom_client = new byte[1024];
        in_server.read(getfrom_client);
        String get = new String(getfrom_client);
        //处理传入的数据
        System.out.println("服务端:----------收到客户端请求---------");
        System.out.println(get);
        //打印从客户端收到的信息

        OutputStream out_server = socket_server.getOutputStream();
        //构建输出流用于给客户端发送消息
        out_server.write("你好客户端".getBytes());
        System.out.println("服务端:-----------回复客户端---------");

        socket_server.close();
        server.close();
        //关闭socket,关闭serversocket,释放资源
    }
}

 

先运行server端,运行后server端会处于监听端口状态

 此时运行client端

socket原理相关推荐查看https://blog.youkuaiyun.com/jiushimanya/article/details/82684525

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值