小白实战Socket网络编程一:使用Socket进行TCP连接

本文从基础介绍网络编程的重要性,通过Java的Socket实现简单的TCP连接实例,包括服务端监听、客户端连接并双向通信,直至客户端发送'bye'退出。讲解了Socket如何调度计算机资源进行数据交互,并强调了相关API的阻塞特性。
摘要由CSDN通过智能技术生成

***前言-本系列的Socket网络编程,从小白的角度切入理解,旨在于记录从简单的Socket 实现TCP连接开始逐步到最终完成大文件消息分片模型发送的整个过程,其中整理主要包括以下8个实战记录主题:

  1. Socket实现TCP连接
  2. UDP局域网搜索连接
  3. UDP辅助TCP实现点对点传输实例
  4. 简单的聊天室实战案例
  5. NIO优化服务端线程模型
  6. 数据传输的稳定性优化
  7. 客户端发送文件到服务器实战
  8. 分片消息模型实现大文件传输实战

什么是网络编程?我们为什么需要网络编程?

  在日常的工作中,作为一个金融类清算系统的程序员,我工作的首要任务是在与产品经理交流的过程中把复杂的金融业务需求进行DDD建模,并且以此设计数据库、代码函数、代码流程等从而实现清晰稳定的业务功能;再进一步则是在实现的功能稳定之后对性能进行测试优化。
  然而某一天,一个在心里感兴趣已久的问题一直在困扰我。那些微信的聊天、视频直播、甚至是网游这类数据需要频繁发送接收的产品系统是如何实现的呢? 这就打开了我对网络编程甚至是高并发的网络编程的兴趣。

  网络编程,总体来说就是:

  • 需要对信息的发送与接收。
  • 通过操作相应的API调度计算机资源,并利用传输管道(网线)进行数据交互的过程。
  • 相关的概念: 套接字、网络模型、数据包…

Java 是如何实现网络编程的?

  到了这里,Socket这个Java耳熟能详的组件便可以浮出来了。我看过一些Java的入门视频总会直接丢出一个Socket写上一大堆代码实现数据交互,却没有告诉我们这些小白,用socket 就是在做调度计算机的资源从而进行数据收发这一概念。
  再进一步理解,对于一个微信的功能,最基本的功能便是聊天(字符串),也就是是我在一台计算机上发送的字符串出去,同时接收对方的字符串数据,结合上java实现那就可以理解成,我用java调用socket组件,把需要发送的字符串数据通过socket 调用计算机的api 通过传输管道发送到对方计算机的网卡上,另外一台计算机上利用socket调度api操作获取网卡接收到的数据,展示在需要展示的地方。

Socket 实现简单TCP连接实例:

前面的一大堆废话都是为了理清对使用这门技术的目的,那么开始实现简单的Socket TCP实例。

功能描述: 假设有A(Server)、B(Client)机器需要实现数据交互,现在以A作为服务端、B作为客户端。

  1. 实现A启动服务端监听客户端连接,B连接到A,并且发送数据到服务端,服务端接收到数据后打印在控制台然后立刻回送客户端发送过来的数据;直到客户端发送bye字符串才退出客户端连接。
  2. 服务端是允许多客户端连接的。

–Server.java

    public static void main(String[] args) throws IOException {
   
        // 启动ServerSocket 并且制定端口8888
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("[服务端启动] ServerAddress:" + serverSocket.getInetAddress() + " Port:" + serverSocket.getLocalPort());

        for(;;){
   
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值