35,UC(14) .
/*
达内学习
*/
回顾:
信号量集: 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) .相关推荐
- 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 ...
- Ubuntu 15.10安装ns2.35+nam
2019独角兽企业重金招聘Python工程师标准>>> Step1: 更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更 ...
- ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)
准备材料: 1.ubuntukylin14,百度进官网自行下载: 2.ns-allinone-2.35.tar.gz,百度进官网自行下载: 3.虚拟机:vmwareworkstation(可选). 4 ...
- ubuntu16.04下安装NS-2.35以及对simple例的理解
本人是在VMWare上安装的ubuntu16.04版本,然后安装NS2.35. 1.下载ns2的安装包,这里我选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包 ...
- Win7(x64) + Cygwin + ns2.35 安装配置教程
安装配置教程 安装配置教程 软件下载 安装Cygwin 安装ns 设置环境变量 运行测试例子 参考 软件下载 Cygwin 链接:https://cygwin.com/install.html 建议下 ...
- 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)双击运 ...
- NS-2.35和Ubuntu12.04的安装32bit
安装过程受到挫折,最终还是成功了,主要参考以下两份材料,在这里记录下操作过程,希望对您有所帮助. 针对NS-2.35和Ubuntu12.04的安装32bit 网上ns2安装的教程有很多,很杂,有的有些 ...
- ns2安装教程(ns2.35 Ubuntu16.04)
//如果要安装olsr 请先将olsr模块导入在安装 //具体方法见olsr安装方法第一种 ns2 linux安装教程 Ubuntu16.04 1更新系统 sudo apt-get update #更 ...
- Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!
Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...
最新文章
- Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex
- String 重载 + 原理分析
- SQL基础【十五、join、Inner join、Left join、Right join、Full join】
- 查询linux服务器事物传输失败日志,查看fail2ban日志代替lastb查看登录失败记录
- 为什么高斯分布概率密度函数的积分等于1
- 进行Java Web项目开发需要掌握的技术
- 认识接口(Interface)设计
- shell脚本学习指南_学习笔记_第1,2章
- Java实习日记(5)
- 关于培训机构~程序员培训
- 天然气压缩因子计算软件_为什么测量天然气选择气体涡轮流量计?
- 时间线MindMap里程碑的使用方法
- js 浏览器窗口活跃监听
- 有关热敏打印机接口程序
- 【前端微服务化】使用飞冰搭建前端微服务化框架
- java 获取mac字体_Mac OS X上的Java App无法正确打印字体
- 一次新公司注册与小程序上线的历程
- 江涛带你玩STM-CubeMx之OLED使用3线SPI和4线SPI驱动详解
- 三菱PLC控制步进驱动器脉冲定位相关(附代码接线图)
- corosync+pacemaker高可用