从零构建netty--socket基础

本文介绍了Java网络编程中的Socket基础知识,包括如何创建服务端和客户端Socket,以及如何进行数据传输。通过示例代码展示了Socket连接的建立、读写操作,强调了Socket的等价性和可重复读写的特性,帮助读者理解Socket与TCP的联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

socket基础

对于java网络编程来说,我们能接触到的最底层便是socket了。我相信大部分阅读此篇文章的同仁都用过socket。但是,我这篇教程的理念之一就是事无巨细,或者说,啰里啰嗦。因为本来就是一个思维的过程,所以,看官老爷们,就当做意识流风格来看吧(也是因为我文笔较差,因此文章的观赏性可能不是太好,给自己找个理由)。

我在刚学编程的时候,其实是一脸茫然的,虽然也会为屏幕输出“hello world",感到兴奋,但是兴奋之余会觉得,嗯~?,这东西跟我想象的不一样啊,就一个黑屏上输出几个字符,能干啥?这玩意跟网站啥的不沾边啊。包括学习了一些算法、数据结构后,还是觉得,网站啥的,跟我学的不沾边。

后来在学习参加了一个项目,涉及到网络编程,项目简单点说就是树莓派跟pc通过路由器进行数据交换。从那时候起开始使用socket,当然那个时候不求甚解,根本跟学过的网络模型也对不上号。什么三次握手,四次挥手,没用到啊。先不管,干就完了。

秉着这个徐循渐进的学习及思考过程,我就开始了socket编程。

链接

来一段服务端socket示例:

代码 1-1

public class OioServer {
   
	private ServerSocket serverSocket;
    private void openServer(int port) throws IOException {
   
        // 1 创建ServerSocket
        serverSocket = new ServerSocket();
        // 2 绑定端口
        SocketAddress socketAddress = new InetSocketAddress(port);
        serverSocket.bind(socketAddress);
    }

    @Test
    public void testOpenServer() throws IOException {
   
        OioServer oioServer = new OioServer();
        oioServer.openServer(8081);
        // block
        Scanner scan = new Scanner(System.in);
        scan.next();
    }
}

运行test后,服务器开始监听port端口了。然后我们验证下是不是真的在监听,我再window上测试的,所以这里以window为例。首先要打开cmd窗口,然后输入命令

代码 1-2

netstat -aon|findstr "8081"

图1-1
image-20210317210840754.png

可以看到真的在监听了, 现在虽然开始监听了,但是,真的有客户端从8081进来该怎么办?我们还需要处理连接,这个连接就是我们的主角socket.

修改1-1代码如下:

代码1-2

public class OioServer {
   
	private ServerSocket serverSocket;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值