#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define RPORT 5000 //要链接的端口号
#define SPORT 6000
#define MAXBUFLEN 100 //能够接收的最长数据
main()
{
int sockfd1,sockfd2;
struct sockaddr_in my1_addr;
struct sockaddr_in my2_addr;
struct sockaddr_in sendpc_addr;
struct sockaddr_in receivepc_addr;
int addr_len,numbytes1,numbytes2,numbytes3;
char buf[MAXBUFLEN];
char test[3];
if((sockfd1 = socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket1");
exit(1);
}
if((sockfd2 = socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket2");
exit(1);
}
my1_addr.sin_family = AF_INET;
my1_addr.sin_port = htons(RPORT);
my1_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my1_addr.sin_zero),8);
my2_addr.sin_family = AF_INET;
my2_addr.sin_port = htons(SPORT);
my2_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my2_addr.sin_zero),8);
if(bind(sockfd1,(struct sockaddr*)&my1_addr,sizeof(struct sockaddr)) == -1)
{
perror("bind1");
exit(1);
}
if(bind(sockfd2,(struct sockaddr*)&my2_addr,sizeof(struct sockaddr)) == -1)
{
perror("bind2");
exit(1);
}
addr_len = sizeof(struct sockaddr);
if((numbytes1 = recvfrom(sockfd1,buf,MAXBUFLEN,0,(struct sockaddr*)&sendpc_addr,&addr_len)) == -1)
{
perror("recvfrom1");
exit(1);
}
printf("got packet from %s\n",inet_ntoa(sendpc_addr.sin_addr));
printf("packet is %d bytes long\n",numbytes1);
buf[numbytes1] = '\0';
printf("packet contains \"%s\"\n",buf);
close(sockfd1);
if((numbytes2 = recvfrom(sockfd2,test,3,0,(struct sockaddr*)&receivepc_addr,&addr_len)) == -1)
{
perror("recvfrom2");
exit(1);
}
if(test[0])
{
printf("*******************************************\n");
if((numbytes3 = sendto(sockfd2,buf,numbytes1,0,(struct sockaddr*)&receivepc_addr,sizeof(struct sockaddr))) == -1);
{
perror("sendto2");
exit(1);
}
printf("send %d bytes to %s\n",numbytes3,inet_ntoa(receivepc_addr.sin_addr));
}
close(sockfd2);
return 0;
}
xuel0532
- 粉丝: 1
- 资源: 6
最新资源
- 微信小程序实现找不同游戏
- 100_Numpy_exercises.ipynb
- 2023-04-06-项目笔记 - 第三百二十六阶段 - 4.4.2.324全局变量的作用域-324 -2025.11.23
- 一个简单的模板,开始用 Python 编写你自己的个性化 Discord 机器人.zip
- TP-Link 智能家居产品的 Python API.zip
- 一个需要十一个字才能i激活的神奇代码-OLP
- 如果你喜欢 Python,请使用此模板.zip
- 带有 python 3 和 opencv 4.1 的 Docker 映像.zip
- 知识领域,内容概要,使用场景及目标
- 《基于MATLAB的三段式距离保护建模与仿真》
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈