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

DAY1 网络编程(TCP客户端服务器)

作业:

        TCP客户端服务器。

server服务器代码:

#include <myhead.h>
#define  IP "192.168.110.52"
#define PORT 8886
#define BACKLOG 20
int main(int argc, const char *argv[])
{int oldfd=socket(AF_INET,SOCK_STREAM,0);//IPV4通信  TCP通信协议if(oldfd==-1){perror("socket");return -1;}//2.绑定IP和端口号struct sockaddr_in server={.sin_family=AF_INET,//IPV4.sin_port=htons(PORT),//端口号转为网络字节序.sin_addr.s_addr=inet_addr(IP),//IP};if(bind(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("bind");return -1;}//3.监听if(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;   }//4.接收客户端连接请求创建新的描述符用于通讯struct sockaddr_in client;//接收客户端信息的结构体socklen_t client_len=sizeof(client);//计算出结构体大小int newfd;newfd =accept(oldfd,(struct sockaddr*)&client,&client_len);if(newfd==-1){perror("accept");return -1;}printf("%s发来连接请求\n",inet_ntoa(client.sin_addr));//5.循环收发信息char buff[1024];while(1){memset(buff,0,sizeof(buff));int len=recv(newfd,buff,sizeof(buff),0);//0:非阻塞 MSG_DONTWAITif(len==0){printf("客户端断开连接\n");break;}printf("%s\n",buff);strcat(buff,"520");send(newfd,buff,sizeof(buff),0);}close(oldfd);close(newfd);return 0;
}

client客户端代码:

#include <myhead.h>
#define IP "192.168.110.52"
#define PORT 8886
int main(int argc, const char *argv[])
{int oldfd=socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}struct sockaddr_in server={.sin_family=AF_INET,.sin_port=htons(PORT),.sin_addr.s_addr=inet_addr(IP),};if(connect(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("connect");return -1;}char buff[1024];while(1){fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1]='\0';send(oldfd,buff,sizeof(buff),0);int len=recv(oldfd,buff,sizeof(buff),0);if(len==0){printf("服务器意外退出\n");break;}printf("接收服务器:%s\n",buff);}close(oldfd);return 0;
}

Xmind知识点:

http://www.lryc.cn/news/488425.html

相关文章:

  • 如何在Ubuntu当中利用CloudCompare软件进行点云配准拼接?
  • AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)
  • vue数据变化但页面不变
  • Leetcode128. 最长连续序列(HOT100)
  • 【阅读笔记】Dense trajectories and motion boundary descriptors for action recognition
  • React 远程仓库拉取项目部署,无法部署问题
  • CSS3新特性——字体图标、2D、3D变换、过渡、动画、多列布局
  • 前端反向代理的配置和實現
  • 【K8S系列】Kubernetes Pod节点ImagePullBackOff 状态及解决方案详解【已解决】
  • JSONObject jsonObject = JSON.parseObject(json);
  • 软件测试之测试用例扩展
  • hj 212 协议解包php解包,
  • 03架构模式(D2_架构模式01)
  • 深入List集合:ArrayList与LinkedList的底层逻辑与区别
  • mac安装appuim
  • Telegram bot Mini-App开发实践---Telegram简单介绍与初始化小程序获取window.Telegram.WebApp对象并解析
  • 绿光一字线激光模组:工业制造与科技创新的得力助手
  • 鸿蒙进阶篇-Math、Date
  • 定时器简介
  • 3C产品说明书电子化转变:用户体验、环保与商业机遇的共赢
  • redis:主从复制
  • 思考Redis的用途 2024-11-19
  • 根据条件 控制layui的table的toolbar的按钮 显示和不显示
  • 什么是C++中的初始化参数列表,它的作用是什么?
  • python基础之学生成绩管理系统
  • SQL Server Management Studio 的JDBC驱动程序和IDEA 连接
  • 大数据挖掘期末复习
  • 凸函数与深度学习调参
  • Java前端基础——CSS
  • Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统