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

Linux应用--网络编程

文章目录

  • 分类
  • TCP
  • UDP

分类

  • TCP 可靠,重传,有连接
  • UDP 不可靠,无连接

TCP

  • server
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>#include <unistd.h>#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10
int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;int iAddrLen;unsigned char ucReceBuf[1000];int iRevcLen;int iClientNum=-1;struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;iSocketServer = socket(AF_INET, SOCK_STREAM, 0);if(iSocketServer==-1){printf("socket error\n");return -1;}tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;memset(tSocketServerAddr.sin_zero,0,8);iRet = bind(iSocketServer, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));if(iRet==-1){printf("bind error\n");return -1;    }iRet=listen(iSocketServer,BACKLOG);if(iRet==-1){printf("listen error\n");return -1;    }    while(1){iAddrLen=sizeof(struct sockaddr);iSocketClient=accept(iSocketServer, (struct sockaddr *)&tSocketClientAddr, &iAddrLen);if(iSocketClient!=-1){iClientNum++;printf("Get connect from client %d %s\n",iClientNum,inet_ntoa(tSocketClientAddr.sin_addr));if(!fork()){while(1){iRevcLen=recv(iSocketClient, ucReceBuf,999,0);if(iRevcLen<=0){close(iSocketClient);return -1;}else{ucReceBuf[iRevcLen]='\0';printf("Get msg from client %d %s\n",iClientNum, ucReceBuf);}}}}}close(iSocketServer);return 0;
}
  • client
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;unsigned char ucReceBuf[1000];struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;   int isendlen;if(argv!=2){printf("usage\n");return -1;}iSocketClient=socket(AF_INET, SOCK_STREAM, 0);tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);//tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;inet_aton(argc[1], &tSocketServerAddr.sin_addr);memset(tSocketServerAddr.sin_zero,0,8);iRet= connect(iSocketClient, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));while(1){if(fgets(ucReceBuf,999,stdin)){isendlen=send(iSocketClient,ucReceBuf,strlen(ucReceBuf),0);if(isendlen<=0){return -1;}}}return 0;
}

UDP

  • server
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>#include <unistd.h>#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10
int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;int iAddrLen;unsigned char ucReceBuf[1000];int iRevcLen;int iClientNum=-1;struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;iSocketServer = socket(AF_INET, SOCK_DGRAM, 0);if(iSocketServer==-1){printf("socket error\n");return -1;}tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;memset(tSocketServerAddr.sin_zero,0,8);iRet = bind(iSocketServer, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));if(iRet==-1){printf("bind error\n");return -1;    }while(1){iAddrLen=sizeof(struct  sockaddr);iRevcLen=recvfrom(iSocketServer, ucReceBuf,999,0,(struct  sockaddr*)&tSocketClientAddr,&iAddrLen);if(iRevcLen>0){ucReceBuf[iRevcLen]='\0';printf("get msg from %s %s\n",inet_ntoa(tSocketClientAddr.sin_addr),ucReceBuf);}}close(iSocketServer);return 0;
}
  • client
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;unsigned char ucReceBuf[1000];struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;   int isendlen;if(argv!=2){printf("usage\n");return -1;}iSocketClient=socket(AF_INET, SOCK_DGRAM, 0);tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);//tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;inet_aton(argc[1], &tSocketServerAddr.sin_addr);memset(tSocketServerAddr.sin_zero,0,8);//iRet= connect(iSocketClient, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));while(1){if(fgets(ucReceBuf,999,stdin)){isendlen=sendto(iSocketClient,ucReceBuf,strlen(ucReceBuf),0,(const struct sockaddr *)&tSocketServerAddr,sizeof(struct sockaddr));if(isendlen<=0){return -1;}}}return 0;
}
http://www.dtcms.com/a/461528.html

相关文章:

  • 鸟哥的Linux私房菜 第三部分: 学习shell与shell script
  • 鸿蒙中 UDP 数据包发不出去?一文教你从权限到代码彻底排查!
  • 前端小白学习路线(参考)
  • 大连工业大学图书馆网站建设优化培训班
  • 浅谈 富文本编辑器
  • 有手机网站了还要微网站吗设计平台兼职
  • **发散创新:状态函数在编程中的深度应用与实现**在编程领域,状态函数是一个核心概
  • 【OCR】PaddleX
  • Python 元组与集合详解
  • 微信小程序的页面生命周期 以及onShow的应用场景
  • 微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
  • 企业建站系统知识库管理系统方案
  • 购物网站的排版wordpress个人主页
  • 51c视觉~3D~合集7
  • 生鲜买菜商城APP:便捷生活,触手可及的新鲜体验
  • 网站seo去哪个网站找好做化妆品的网站有哪些
  • Java求职面试:从Spring Boot到Kafka的技术探讨
  • ChatGPT Agent深度总结:从“对话工具”到“超级助理”的AI革命
  • shell编程实战
  • 拟定网站建设合同的工作过程记录拍摄微电影公司
  • 厦门 公司网站建设绵阳做网站的公司
  • 【android 驱动开发十一】pinctrl 子系统
  • 【android驱动开发十二】内核子系统大概-进阶
  • vue前端面试题——记录一次面试当中遇到的题(2)
  • 【pyTorch】关于PyTorch的高级索引机制理解
  • c++ bug 函数定义和声明不一致导致出bug
  • 网站建设需求分析文档手机上制作ppt的软件
  • 推广网站怎么做能增加咨询南宁企业官网seo
  • MATLAB的无线传感器网络(WSN)算法仿真
  • k8s opa集成