[国嵌攻略][091][TCP网络程序设计]
server.c
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <strings.h>
- #include <stdio.h>
- #define SERVER_PORT 3333
- void main(){
- //创建标识
- int serverfd;
- serverfd = socket(AF_INET, SOCK_STREAM, ); //建立TCP连接
- //绑定地址
- struct sockaddr_in serverAddr;
- serverAddr.sin_family = AF_INET; //设置协议
- serverAddr.sin_port = htons(SERVER_PORT); //设置端口
- serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); //设置地址
- bzero(serverAddr.sin_zero, ); //设置为零
- bind(serverfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));
- //监听端口
- listen(serverfd, );
- //等待连接
- socklen_t clientAddrLen;
- struct sockaddr_in clientAddr;
- int clientfd;
- clientAddrLen = sizeof(struct sockaddr);
- clientfd = accept(serverfd, (struct sockaddr *)&clientAddr, &clientAddrLen);
- //接收数据
- char buffer[];
- recv(clientfd, buffer, sizeof(buffer), );
- //显示数据
- char *clientIPAddr;
- clientIPAddr = (char *)inet_ntoa(clientAddr.sin_addr.s_addr);
- printf("server recvice from %s:\n%s", clientIPAddr, buffer);
- //关闭连接
- close(clientfd);
- close(serverfd);
- }
client.c
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <strings.h>
- #include <stdio.h>
- #define SERVER_PORT 3333
- int main(int argc, char **argv){
- //参数检查
- if(argc != ){
- printf("Usage:\n\t./client <ip address>\n");
- return -;
- }
- //创建标识
- int clientfd;
- clientfd = socket(AF_INET, SOCK_STREAM, ); //建立TCP连接
- //建立连接
- struct sockaddr_in serverAddr;
- serverAddr.sin_family = AF_INET; //设置协议
- serverAddr.sin_port = htons(SERVER_PORT); //设置端口
- serverAddr.sin_addr.s_addr = inet_addr(argv[]); //设置地址
- bzero(serverAddr.sin_zero, ); //设置为零
- connect(clientfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));
- //输入数据
- char buffer[];
- printf("client send to %s:\n", argv[]);
- fgets(buffer, sizeof(buffer), stdin);
- //发送数据
- send(clientfd, buffer, sizeof(buffer), );
- //关闭连接
- close(clientfd);
- return ;
- }
[国嵌攻略][091][TCP网络程序设计]的更多相关文章
- [国嵌攻略][092][UDP网络程序设计]
server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #inc ...
- [国嵌攻略][090][linux网络编程模型]
编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一.而针对不同协议的差异性操作,则交给了Socket去自行解决. TCP编程模型 UDP编程模型
- [国嵌攻略][068][tftp网络协议实现]
IP协议结构 UDP协议结构 TFTP协议结构 TFTP端口 读写请求端口: 69 其他请求端口:1024~65535 主程序 /*********************************** ...
- [国嵌攻略][119][Linux中断处理程序设计]
裸机中断: 1.中断统一入口. 2.注册中断处理程序. 3.根据中断源编号,调用中断处理程序. Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口. 2.获取产生中断源的 ...
- [国嵌攻略][117][LED驱动程序设计]
LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...
- [国嵌攻略][065][DM9000驱动程序设计]
移植代码:通过已有的可用的代码修改到新环境下运行. 代码编写: 初始化网卡 1.选中网卡 nLAN_CS BWSCON(0x48000000) DW4:01 16bit BANKCON4(0x4800 ...
- [国嵌攻略][164][USB驱动程序设计]
USB驱动模型 1.USB host controller driver(主控器驱动):为USB主控制器提供驱动程序 2.USB core(USB核心):连接USB主控制器驱动和USB设备驱动 3.U ...
- [国嵌攻略][160][SPI驱动程序设计]
SPI Flash驱动 1.打开/drivers/mtd/devices/m25p80.c驱动文件.找到初始化m25p80_init函数,其中通过spi_register_driver来注册spi设备 ...
- [国嵌攻略][151][nandflash驱动程序设计]
初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函 ...
随机推荐
- rtmp指令解释--转
指令 Core rtmp 语法:rtmp { ... } 上下文:根 描述:保存所有 RTMP 配置的块. server 语法:server { ... } 上下文:rtmp 描述:声明一个 RTMP ...
- Hello 2018, Bye 2017
2017年过去了,过去一年经历了太多,改变了好多好多,可以说人生进入了另一个阶段,有可能是成熟吧. 回顾2017 去年换了新工作,离开了将近工作了8年的公司,不带走一丝云彩,为其任劳任怨,最后没有任何 ...
- SQL语句 我喜欢上海
select * from [user] wherer name like '上海%'
- Nodejs真.多线程处理
前言 Threads à gogo 是nodejs 的原生模块,使用这个模块可以让nodejs 具备多线程处理功能 安装方法 npm install threads_a_gogo 下载测试源码 git ...
- Rstudio( bioconductor)下载太慢,用国内镜像
在Rstudio中,下载软件install.packages()和 bioconductor软件下载命令 source("http://bioconductor.org/biocLite.R ...
- 几个关于js数组方法reduce的经典片段
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- SEO之网站关键词的优化 :首页,内页关键字,长尾关键字
这篇文章主要讲的是SEO之网站关键词的优化 :首页,内页关键字,长尾关键字. 为了查找方便,小A汇总了所有SEO优化的相关教程,方便大家查找到自己想要的SEO优化技巧: SEO优化教程汇总. 网站关键 ...
- SourceTree管理工具的一些使用总结
一.冲突解决 在团队合作中,如果两个人同时修改一个文件 ,这个时候如果合并他人提交的代码是会产生冲突的,怎么解决? 1.先将代码提交至本地服务器 2.合并他人代码,这个时候在工作副本中会显示我们冲突的 ...
- Scala 简介
Scala 特性 面向对象特性 Scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述. 类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制.这 ...
- 基于docker的 Hyperledger Fabric 多机环境搭建(下)
Docker环境部署见上一篇博客:http://www.cnblogs.com/cnblogs-wangzhipeng/p/6994541.html. 我们部署分布式容器服务后就要在上面部署Fabri ...