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

网络编程9.5

流式域客户端:

#include <myhead.h>
int main(int argc, const char *argv[])
{int oldfd = socket(AF_UNIX,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}if(access("./myclient",F_OK)==0){if(unlink("./myclient")==-1){perror("unlink");return -1;}}struct sockaddr_un client;client.sun_family = AF_UNIX;strcpy(client.sun_path,"./myclient");if(bind(oldfd,(struct sockaddr *)&client,sizeof(client))==-1){perror("bind");return -1;}struct sockaddr_un server;server.sun_family = AF_UNIX;strcpy(server.sun_path,"./myserver");if(connect(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("connect");return -1;}printf("连接服务器成功\n");char buf[1024];while(1){printf("请输入要发送的消息:");fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1] = '\0';send(oldfd,buf,sizeof(buf),0);printf("发送成功\n");if(strcmp(buf,"quit")==0){break;}recv(oldfd,buf,sizeof(buf),0);printf("接收服务器的信息:%s\n",buf);}return 0;
}

流式域服务器:

#include <myhead.h>
#define BACKLOG 10
int main(int argc, const char *argv[])
{int oldfd = socket(AF_UNIX,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}if(access("./myserver",F_OK)==0){if(unlink("./myserver")==-1){perror("unlink");return -1;}}struct sockaddr_un server;server.sun_family = AF_UNIX;strcpy(server.sun_path,"./myserver");if(bind(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("bind");return -1;}if(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;}int newfd = accept(oldfd,NULL,NULL);if(newfd==-1){perror("accept");return -1;}char buf[1024];while(1){int len = recv(newfd,buf,sizeof(buf),0);if(len==0){printf("客户端跑了\n");break;}strcat(buf,"^_^");send(newfd,buf,sizeof(buf),0);printf("转发成功\n");}close(newfd);close(oldfd);return 0;
}

UDP客户端:

#include <myhead.h>
#define CLIPORT 9999
#define CLIIP "192.168.0.115"
int main(int argc, const char *argv[])
{int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}struct sockaddr_in sin = {.sin_family = AF_INET,.sin_port = htons(CLIPORT),.sin_addr.s_addr = inet_addr(CLIIP)};char buf[1024];while(1){printf("客户端请输入消息:");fgets(buf,sizeof(buf),stdin);sendto(oldfd,buf,sizeof(buf),0,(struct sockaddr *)&sin,sizeof(sin));printf("发送成功\n");}close(oldfd);return 0;
}

UDP服务器:

#include <myhead.h>
#define SERPORT 9999
#define SERIP "192.168.0.115"
int main(int argc, const char *argv[])
{//1、创建套接字int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}//2、绑定struct sockaddr_in sin = {.sin_family = AF_INET,.sin_port = htons(SERPORT),.sin_addr.s_addr = inet_addr(SERIP)};if(bind(oldfd,(struct sockaddr *)&sin,sizeof(sin))==-1){perror("bind");return -1;}//3、收发消息struct sockaddr_in cin;socklen_t cinlen = sizeof(cin);char buf[1024];while(1){memset(buf,0,sizeof(buf));int len = recvfrom(oldfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,&cinlen);if(len==0){printf("客户端跑了\n");break;}printf("服务器收到的消息:%s\n",buf);}close(oldfd);return 0;
}


http://www.mrgr.cn/news/20493.html

相关文章:

  • 屎记·大夏王本纪
  • 【C++ Primer Plus习题】11.6
  • 苏宁易购发布公告 管理层提前超额完成增持计划
  • nginx中如何设置gzip
  • 【2024数模国赛题目解析丨免费分享】
  • 【PyTorch】基础环境如何打开
  • Java设计模式【备忘录模式】-行为型
  • 合并大量netcdf数据的代码
  • 一大波华为“黑”正在赶来
  • SpringBoot与Minio的极速之旅:解锁文件切片上传新境界
  • 语言的自动类型
  • asynMotorAxis类
  • 什么是集运代购?集运代购系统能解决哪些问题?
  • Linux中的信号有哪些?
  • 红外小目标检测:基于深度学习
  • spring提升-多数据源配置
  • 【全网最全】2024年数学建模国赛C题保奖思路+成品论文+matlab/python代码等(后续会更新
  • 拼图小游戏
  • location.protocol+‘//‘+location.hostname实现什么功能?
  • 2024 数学建模高教社杯 国赛(C题)| 农作物的种植策略 | 建模秘籍文章代码思路大全