/*
 达内学习 
*/
回顾:
 信号量集: semaphore arrays
 1 key = ftok(); 2 semid = semget()
 3 semctl(semid ,0,SEMTVAL,10); 信号量集就可以使用了
 4 semop() 实现 +1,—1
 5 semctl() 删除 计数器组层的数组
 网络编程(socket编程)
 服务端:
 1 socket() ->sockfd
 2 准备通信地址 sockaddr sockaddr_un sockaddr_in
 3 绑定 bind()
 4 读写sockfd 实现信息交互
 5 close(sockfd);
 客户端:
 第三步connect()函数,用法和bind()没有区别  其他一样
今天:
 socket本地通信,实用性不如消息队列
 socket网络通信和本地通信差不多,地址不同
 网络通信时,端口和IP地址需要使用转换函数
 端口转换函数: htons() 本地转网络(short) ; IP地址转换函数:int inet_addr(char*) 点分十进制转 十六进制

一对多通信:
 TCP的 一对多通信
 服务端:
 1 socket()得到socket 描述符,参数tpye 必须用SOCK_STREAM
 2 准备通讯地址,端口和IP需要转换函数 hotns inet_addr (char* )
 3 绑定 bind() 
 4 用listen()函数,监听客户端
 5 用accept()函数,等待客户端的链接,如果没有链接,阻塞,如果有客户端链接,返回一个新的socket描述符,用于读写数据
 6 读写数据read()/write()
 7 关闭对应的socket  
 客户端 一一对一的完全一样
 绑定之前加上代码
 int reuse = 1; setsockopt(sockfd, SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse));
练习:实现客户端加上输入(scanf),要求能多次输入,输入bye 退出 客户端输入一句发送给服务器一句
  服务器能多次接受同一客户端的数据,并且把客户端发送来的数据发回给客户端
  思路:while(1) {数据交互,遇到bye break;}
  清空buf  memset(char*,int num,size_t len); //字符串,清成的数字,清多少
如何提高编写代码的能力

1 尽量实现:不看任何代码 写出当天的代码
2 在当天的代码上能自由的分段(功能模块)
3 找一些能实现的课外代码(新的)

TCP编程的经验
1 固定的套路 ,服务器7步,客户端5步
2 服务器停在accept(),直到有客户端连接
3 服务器和客户端要同时考虑

UDP编程
TCP 和UDP 协议的区别
TCP 是有连接协议,在客户端和服务端通信过程中,一直保持链接,数据交互以数据流的方式进行,(SOCK_STREAM)可以重发一切错误数据。
UDP 是无连接协议,在客户端和服务器通信过程中不保持链接,数据交互以数据报的方式(SOCK_DGRAM)进行,不会重发任何错误数据。
UDP效率比较高,但是不保证数据的完整和正确
TCP效率低,但是可以保证数据的完整和正确

UDP的发送和接受有特定函数
sendto() /recvfrom()  int size = recvfrom(sockfd,buf,100,0,(structsockaddr*)&from,&len);
sendto(sockfd,"hello",5,0,(struct sockaddr*)&addr,sizeof(addr));

35,UC(14) .相关推荐

  1. Ubuntu 14.04下安装ns-2.35详细教程

    1.配置环境 $sudo apt-get install build-essential $sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev ...

  2. Ubuntu 15.10安装ns2.35+nam

    2019独角兽企业重金招聘Python工程师标准>>> Step1: 更新系统 sudo apt-get  update #更新源列表 sudo apt-get upgrade #更 ...

  3. ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)

    准备材料: 1.ubuntukylin14,百度进官网自行下载: 2.ns-allinone-2.35.tar.gz,百度进官网自行下载: 3.虚拟机:vmwareworkstation(可选). 4 ...

  4. ubuntu16.04下安装NS-2.35以及对simple例的理解

    本人是在VMWare上安装的ubuntu16.04版本,然后安装NS2.35. 1.下载ns2的安装包,这里我选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包 ...

  5. Win7(x64) + Cygwin + ns2.35 安装配置教程

    安装配置教程 安装配置教程 软件下载 安装Cygwin 安装ns 设置环境变量 运行测试例子 参考 软件下载 Cygwin 链接:https://cygwin.com/install.html 建议下 ...

  6. VM15.5.0+Ubuntu16.04.6+ns2.35仿真平台

    VM15.5.0+Ubuntu16.04.6+ns2.35仿真平台 步骤一.安装虚拟机:VMware® Workstation 15 Pro(版本15.5.0) (1)下载虚拟机应用程序 (2)双击运 ...

  7. NS-2.35和Ubuntu12.04的安装32bit

    安装过程受到挫折,最终还是成功了,主要参考以下两份材料,在这里记录下操作过程,希望对您有所帮助. 针对NS-2.35和Ubuntu12.04的安装32bit 网上ns2安装的教程有很多,很杂,有的有些 ...

  8. ns2安装教程(ns2.35 Ubuntu16.04)

    //如果要安装olsr 请先将olsr模块导入在安装 //具体方法见olsr安装方法第一种 ns2 linux安装教程 Ubuntu16.04 1更新系统 sudo apt-get update #更 ...

  9. Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!

    Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...

最新文章

  1. Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex
  2. String 重载 + 原理分析
  3. SQL基础【十五、join、Inner join、Left join、Right join、Full join】
  4. 查询linux服务器事物传输失败日志,查看fail2ban日志代替lastb查看登录失败记录
  5. 为什么高斯分布概率密度函数的积分等于1
  6. 进行Java Web项目开发需要掌握的技术
  7. 认识接口(Interface)设计
  8. shell脚本学习指南_学习笔记_第1,2章
  9. Java实习日记(5)
  10. 关于培训机构~程序员培训
  11. 天然气压缩因子计算软件_为什么测量天然气选择气体涡轮流量计?
  12. 时间线MindMap里程碑的使用方法
  13. js 浏览器窗口活跃监听
  14. 有关热敏打印机接口程序
  15. 【前端微服务化】使用飞冰搭建前端微服务化框架
  16. java 获取mac字体_Mac OS X上的Java App无法正确打印字体
  17. 一次新公司注册与小程序上线的历程
  18. 江涛带你玩STM-CubeMx之OLED使用3线SPI和4线SPI驱动详解
  19. 三菱PLC控制步进驱动器脉冲定位相关(附代码接线图)
  20. corosync+pacemaker高可用

热门文章

  1. APIO10-特别行动队-题解
  2. 如何在U-Boot中添加自定义命令
  3. 数据中台各种架构图大全
  4. 2021年建筑架子工(建筑特殊工种)证考试及建筑架子工(建筑特殊工种)模拟考试题
  5. 支付宝电脑网页支付接口的调用
  6. 深夜,想到今天学的linux内容,太值了
  7. 还用老套路分析财务数据?这3种财务分析方法,你一定得看看
  8. 我的大学(学习-上)
  9. 标准正态分布变量的累积概率分布函数
  10. python数据分析面试常见问题及答案_十道 Python 面试问题陷阱