当前位置: 首页 > news >正文

网络编程----TCP/IP协议

使用TCP/IP协议实现客户端和服务器端进行通信:

1.服务器端(test1.c):

#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>// 创建服务器端
int main()
{//1.创建套接字int serfd=socket(AF_INET,SOCK_STREAM,0);if(serfd==-1){printf("create socket failed\n");return -1;}//2.绑定套接字和服务器地址struct sockaddr_in addr;addr.sin_family=AF_INET;addr.sin_port=htons(8000);addr.sin_addr.s_addr=inet_addr("127.0.0.1");int ret=bind(serfd,(struct sockaddr*)&addr,sizeof(addr));
if(ret==-1){printf("bind failed\n");return -2;}//3.监听模式ret=listen(serfd,10);if(ret==-1){printf("listen failed\n");return -3;}//4. 等待客户端连接的到来printf("waitting connect ......\n");
int clifd= accept(serfd,NULL,NULL);
if(clifd==-1)
{printf("create client socket file failed\n");return -4;
}// 5. 读客户端发来的数据
char buff[100]={0};
read(clifd,buff,100);
printf("read content=%s\n",buff);//6.关闭连接close(clifd);//close(serfd);return 0;}

2.客户端(test2.c):

#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <stdio.h>// 创建客户端
int main()
{//1.create socket int clifd=socket(AF_INET,SOCK_STREAM,0);//2.客户端建立socket连线struct sockaddr_in addr; addr.sin_family=AF_INET;addr.sin_port=htons(8000);addr.sin_addr.s_addr=inet_addr("127.0.0.1");int ret=connect(clifd,(struct sockaddr *)&addr,sizeof(addr));if(ret==-1){printf("connect failed\n");return -1;}//3. 向客户端发送写的数据write(clifd,"hello",6);// 4.关闭客户端close(clifd);return 0;
}

运行结果:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • scrcpy源码 windows10编译傻瓜式教程
  • 字符串查找 - 模拟实现strstr 、BF算法 、 KMP算法
  • 【AI】算力底座的巨变
  • golang中的星号*通配符字符串模式匹配 和问号? 通配符字符串模式匹配的2种实现方法 和相关的单元测试用例
  • SQL Zoo 6.The JOIN operation
  • 【c++】类和对象 (中) (类的默认成员函数)
  • Springboot 实现 Modbus Rtu 协议接入物联网设备
  • matlab实现红绿灯识别
  • MySQL事务隔离级别、InnoDB使用MVCC+各种锁实现了RC和RR事务隔离级别、具体案例
  • cpio 命令
  • element-ui周选择器,如何获取年、周、起止日期?
  • C# Type 对象序列化与反序列化
  • 合并两个有序数组(LeetCode)
  • oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据
  • sql获取过去的小时数
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • CEF与代理
  •  D - 粉碎叛乱F - 其他起义
  • Effective Java 笔记(一)
  • idea + plantuml 画流程图
  • python 装饰器(一)
  • python学习笔记 - ThreadLocal
  • quasar-framework cnodejs社区
  • Redis学习笔记 - pipline(流水线、管道)
  • Webpack 4 学习01(基础配置)
  • 闭包--闭包之tab栏切换(四)
  • 程序员最讨厌的9句话,你可有补充?
  • 技术胖1-4季视频复习— (看视频笔记)
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 深入浅出Node.js
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信小程序开发问题汇总
  • 物联网链路协议
  • 一天一个设计模式之JS实现——适配器模式
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​渐进式Web应用PWA的未来
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • $refs 、$nextTic、动态组件、name的使用
  • (1) caustics\
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (补充)IDEA项目结构
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (转)程序员疫苗:代码注入
  • .net Stream篇(六)
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .net分布式压力测试工具(Beetle.DT)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [20190416]完善shared latch测试脚本2.txt
  • [383] 赎金信 js
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成