server.c

  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <strings.h>
  4. #include <stdio.h>
  5.  
  6. #define SERVER_PORT 3333
  7.  
  8. void main(){
  9. //创建标识
  10. int serverfd;
  11.  
  12. serverfd = socket(AF_INET, SOCK_STREAM, ); //建立TCP连接
  13.  
  14. //绑定地址
  15. struct sockaddr_in serverAddr;
  16.  
  17. serverAddr.sin_family = AF_INET; //设置协议
  18. serverAddr.sin_port = htons(SERVER_PORT); //设置端口
  19. serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); //设置地址
  20. bzero(serverAddr.sin_zero, ); //设置为零
  21.  
  22. bind(serverfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));
  23.  
  24. //监听端口
  25. listen(serverfd, );
  26.  
  27. //等待连接
  28. socklen_t clientAddrLen;
  29. struct sockaddr_in clientAddr;
  30. int clientfd;
  31.  
  32. clientAddrLen = sizeof(struct sockaddr);
  33. clientfd = accept(serverfd, (struct sockaddr *)&clientAddr, &clientAddrLen);
  34.  
  35. //接收数据
  36. char buffer[];
  37.  
  38. recv(clientfd, buffer, sizeof(buffer), );
  39.  
  40. //显示数据
  41. char *clientIPAddr;
  42.  
  43. clientIPAddr = (char *)inet_ntoa(clientAddr.sin_addr.s_addr);
  44. printf("server recvice from %s:\n%s", clientIPAddr, buffer);
  45.  
  46. //关闭连接
  47. close(clientfd);
  48. close(serverfd);
  49. }

client.c

  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <strings.h>
  4. #include <stdio.h>
  5.  
  6. #define SERVER_PORT 3333
  7.  
  8. int main(int argc, char **argv){
  9. //参数检查
  10. if(argc != ){
  11. printf("Usage:\n\t./client <ip address>\n");
  12. return -;
  13. }
  14.  
  15. //创建标识
  16. int clientfd;
  17.  
  18. clientfd = socket(AF_INET, SOCK_STREAM, ); //建立TCP连接
  19.  
  20. //建立连接
  21. struct sockaddr_in serverAddr;
  22.  
  23. serverAddr.sin_family = AF_INET; //设置协议
  24. serverAddr.sin_port = htons(SERVER_PORT); //设置端口
  25. serverAddr.sin_addr.s_addr = inet_addr(argv[]); //设置地址
  26. bzero(serverAddr.sin_zero, ); //设置为零
  27.  
  28. connect(clientfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));
  29.  
  30. //输入数据
  31. char buffer[];
  32.  
  33. printf("client send to %s:\n", argv[]);
  34. fgets(buffer, sizeof(buffer), stdin);
  35.  
  36. //发送数据
  37. send(clientfd, buffer, sizeof(buffer), );
  38.  
  39. //关闭连接
  40. close(clientfd);
  41.  
  42. return ;
  43. }

[国嵌攻略][091][TCP网络程序设计]的更多相关文章

  1. [国嵌攻略][092][UDP网络程序设计]

    server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #inc ...

  2. [国嵌攻略][090][linux网络编程模型]

    编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一.而针对不同协议的差异性操作,则交给了Socket去自行解决. TCP编程模型 UDP编程模型

  3. [国嵌攻略][068][tftp网络协议实现]

    IP协议结构 UDP协议结构 TFTP协议结构 TFTP端口 读写请求端口: 69 其他请求端口:1024~65535 主程序 /*********************************** ...

  4. [国嵌攻略][119][Linux中断处理程序设计]

    裸机中断: 1.中断统一入口. 2.注册中断处理程序. 3.根据中断源编号,调用中断处理程序. Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口. 2.获取产生中断源的 ...

  5. [国嵌攻略][117][LED驱动程序设计]

    LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...

  6. [国嵌攻略][065][DM9000驱动程序设计]

    移植代码:通过已有的可用的代码修改到新环境下运行. 代码编写: 初始化网卡 1.选中网卡 nLAN_CS BWSCON(0x48000000) DW4:01 16bit BANKCON4(0x4800 ...

  7. [国嵌攻略][164][USB驱动程序设计]

    USB驱动模型 1.USB host controller driver(主控器驱动):为USB主控制器提供驱动程序 2.USB core(USB核心):连接USB主控制器驱动和USB设备驱动 3.U ...

  8. [国嵌攻略][160][SPI驱动程序设计]

    SPI Flash驱动 1.打开/drivers/mtd/devices/m25p80.c驱动文件.找到初始化m25p80_init函数,其中通过spi_register_driver来注册spi设备 ...

  9. [国嵌攻略][151][nandflash驱动程序设计]

    初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函 ...

随机推荐

  1. rtmp指令解释--转

    指令 Core rtmp 语法:rtmp { ... } 上下文:根 描述:保存所有 RTMP 配置的块. server 语法:server { ... } 上下文:rtmp 描述:声明一个 RTMP ...

  2. Hello 2018, Bye 2017

    2017年过去了,过去一年经历了太多,改变了好多好多,可以说人生进入了另一个阶段,有可能是成熟吧. 回顾2017 去年换了新工作,离开了将近工作了8年的公司,不带走一丝云彩,为其任劳任怨,最后没有任何 ...

  3. SQL语句 我喜欢上海

    select * from [user] wherer name like '上海%'

  4. Nodejs真.多线程处理

    前言 Threads à gogo 是nodejs 的原生模块,使用这个模块可以让nodejs 具备多线程处理功能 安装方法 npm install threads_a_gogo 下载测试源码 git ...

  5. Rstudio( bioconductor)下载太慢,用国内镜像

    在Rstudio中,下载软件install.packages()和 bioconductor软件下载命令 source("http://bioconductor.org/biocLite.R ...

  6. 几个关于js数组方法reduce的经典片段

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  7. SEO之网站关键词的优化 :首页,内页关键字,长尾关键字

    这篇文章主要讲的是SEO之网站关键词的优化 :首页,内页关键字,长尾关键字. 为了查找方便,小A汇总了所有SEO优化的相关教程,方便大家查找到自己想要的SEO优化技巧: SEO优化教程汇总. 网站关键 ...

  8. SourceTree管理工具的一些使用总结

    一.冲突解决 在团队合作中,如果两个人同时修改一个文件 ,这个时候如果合并他人提交的代码是会产生冲突的,怎么解决? 1.先将代码提交至本地服务器 2.合并他人代码,这个时候在工作副本中会显示我们冲突的 ...

  9. Scala 简介

    Scala 特性 面向对象特性 Scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述. 类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制.这 ...

  10. 基于docker的 Hyperledger Fabric 多机环境搭建(下)

    Docker环境部署见上一篇博客:http://www.cnblogs.com/cnblogs-wangzhipeng/p/6994541.html. 我们部署分布式容器服务后就要在上面部署Fabri ...