socket编程(基于linux下的网络编程)

提起网络编程那么我们就不得不说一下socket编程了(本博客主要是围绕下面这本书展开的)。

感谢bingo大佬提供的书籍

链接:
https://pan.baidu.com/s/16EXstBLrT6eFYvOB-2WcTA

提取码:vynv
复制这段内容后打开百度网盘手机App,操作更方便哦

其实博主认为socket编程就是套路,很多代码都是可重用的。而且步骤很固定,下面博主给出一个流程(事实上网络编程就是按照这个流程来的,希望大家能记住这个)。

博主在这篇文章中先粗略的介绍一下这些,更详细的在后面的博客慢慢介绍。
大家应该能明白了。

网络编程分为 服务器端和客户端。服务器比客户端要更加复杂

博主就先给大家介绍一下服务器端和客户端的函数顺序,通过图片大家其实已经有很深的印象了吧,再说一次是为了再次加强!!!


服务器端:socket()-->bind( )-->listen()-->accept()-->read()/write()--->close()socket()//创建套接字
bind()//分配套接字地址
listen()//等待连接请求状态
accept()//允许连接
read()/write()//进行数据交换
close()//断开连接
客户端: socket()-->connect()-->read()/write()-->close()socket()//创建套接字
connect()//请求连接
read()/write()//进行数据交换
close()//断开连接

大家只要牢记这一流程去操作,那么进行简单的单道程序设计是很简单的,也就是我们常说的一对一的服务器和客户端得关系.(如果你想要创建一个服务器同时连接多个客户端的话就要去了解 多进程或者多线程了。但是这个效率并不是很高,这样一直开下去负担是很大的,所以就会有高并发,select poll epoll 这些博主后面会慢慢跟新的,所以先跟着博主慢慢了解单道程序设计是如何做到的吧。)

博主打算在第一篇给大家讲解一下各个函数之间的关系,如果前面看不懂是正常的.(主要是第一篇的逻辑是最清楚的,后面不会再像现在给出大方向了,后面是逐个讲解,所以博主打算在这里先解决一些不好理解的问题。)

注意:只是稍微解惑一些问题,具体的详细解释还需要等到博主后面更新的博客

网络编程究竟是什么???

网络编程就是编写程序使两台连网的计算机互相交换数据。
这难道就是全部内容了??

是的,这就是网络编程的全部内容了。
没有想到吧,网络编程比你想象中的要简单多了。

什么是文件描述符???它和句柄之间的关系?

这个问题在那本电子书有很好解释下面就把那个小故事引入进来(相信大家都是比较喜欢看小故事的)



大家可以多多注意博主上面的勾画。
文件描述符从3开始(正整数)。其实大家就可以理解称为指针了(虽然是数字但是他可以对应一个指针,这个指针就能去指向对应的文件)。
理解这么多大概够了吧。

socket套接字博主打算等到将socket函数再给大家好好分析一波

bind()函数

Q1:为什么客户端不适用bind()来绑定IP地址和端口号啊???

A:其实客户端是可以使用bind()函数来绑定端口号的。但是没必要。 看到这里你会不会感觉到一脸懵逼?? 对,就是没必要。首先你要明白,就算你不使用bind()来绑定,内核也会自动为我们分配一个随机的不冲突的端口号。

Q2:既然可以不使用bind()内核也会自动分配,那么我的服务器端是不是也可以不用bind()的,让内核来给我自动分配呢?

A: 这个想法是很危险的哈,因为我的服务器端是要固定的,我需要接收那么多客户端来连接,如果我随机了那这么客户端到哪里来找我呢???

博主举一个例子就能很好的说明这个问题。就比如说你要去上学,学校的位置肯定是固定的,因为这么多学生都需要到那一个学校去上学,但是学校不关心你和其他学生的位置。你随意搬家都能通过地址找到学校,但是反过来,如果你的家的地址一直是固定的但是学校的位置一直在改变,你该怎么办???

服务器端和客户端是否调用bind()函数也就是这个思想。

由于学校断电所以博主无法在黑暗的环境下继续跟新,所以我们的网络编程开篇就先这样吧.后面的稳题会伴随着博主的慢慢更新而逐一讲到的。
加油哟!!

想要表情包的朋友也可以私聊博主,博主是不会吝啬的哟。

都是好兄弟,博主怎么会鸽你。

网络编程之 socket编程相关推荐

  1. java网络编程之Socket编程

    概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...

  2. 网络编程之 Socket 编程 一文看懂

    但使龙城飞将在,只缘身在此山中 之前在 BIO.NIO 入门(Netty 先导) 一文中聊了 socket ,本文想把视野拉大,从计算机网络的纬度来聊聊 socket 温故而知新,聊聊网络模型 上图对 ...

  3. Python网络编程之socket编程

    什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  4. linux网络编程之socket编程(六)

    经过一个国庆长假,又有一段时间没有写博文了,今天继续对linux网络编程进行学习,如今的北京又全面进入雾霾天气了,让我突然想到了一句名句:"真爱生活,珍惜生命",好了,言归正传. ...

  5. linux网络编程之Socket编程

    (1)socket套接字 1)在linux环境下,socket用于表示进程间网络通信的特殊文件类型,其本质是内核借助缓冲区形成的伪文件(不占磁盘空间,除此之外还有二进制文件,管道,字符文件). 2)伪 ...

  6. 网络编程+go+java_GO语言的进阶之路-网络编程之socket

    GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...

  7. 浅谈Java网络编程之Socket (2)

    <浅谈Java网络编程之Socket (1)>中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码. import java.net.*; import java.io ...

  8. iOS网络编程之Socket

    [深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...

  9. Java网络编程之NIO编程(待补充)

    Java网络编程之NIO编程(待补充) 学习网站1:http://ifeve.com/java-nio-all/ 学习网站2:http://www.ibm.com/developerworks/cn/ ...

最新文章

  1. linux stdin STDIN_FILENO 区别
  2. 部署DNS之辅助区域
  3. IBM powerVM VIOS
  4. python 获取文件名_真实需求 | Python+os+openpyxl 批量获取Excel的文件名和最大行数...
  5. Android 启动过程简析(一)之 init 进程
  6. 今天我的MSN提示升级了
  7. .net体系结构——C#高级编程第一章
  8. 在vue 中使用Stylus
  9. 2017年秋季学期获“领跑衫”感言
  10. ora01017 linux,ORA-01017: invalid username/password; logon denied 解决办法
  11. 围堵iPhone 13
  12. data-bi(3):大数据分析软件 CBoard有了一个另外的ui,vuejs写的
  13. php 工作管理系统,TP-Admin
  14. zip、rar等密码破解软件
  15. linux文件授权用户创建
  16. 批处理图片尺寸修改成4的倍数
  17. 南通大学python期末考试试卷答案_南通大学自动评教脚本(python)
  18. 商品-商品订单-支付订单
  19. 计算机色颜色有几种,电脑显示器怎么选?10、8、6bit不同色深都有哪些区别?...
  20. Codeforces 711c 简单dp

热门文章

  1. 中国水稻种子行业市场供需与战略研究报告
  2. php把数据表格数据,php怎样把数据添加到数据表
  3. 2017级C语言大作业 - 水果忍者
  4. wps计算机一级考试试题300,计算机一级考试WPS试题及答案
  5. Stack Overflow上最火的一段代码竟然有Bug
  6. 算力至上?AI芯片大对决
  7. 多线程中抛异常的这个面试题你会吗?
  8. 员工一言不合就离职怎么办?用 Python 写了个员工流失预测模型
  9. 中国开源激荡 20 年:IT 江湖,谁主沉浮?
  10. 武汉新增职位数同比下降44.25%,这些企业却在猛招人,“来多少,要多少”