#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#define SER "192.168.0.118"
#define PORT 8888
typedef struct
{
struct in_addr ip;
int port;
}IP; //ip与端口
typedef struct sockaddr SA;
typedef struct sockaddr_in SA_IN;
//回射服务
void echo_ser(int sockfd)
{
char buf[1024];
while(1)
{
bzero(buf,sizeof(buf));
//接收B发来的数据
recv(sockfd,buf,sizeof(buf)-1,0);
printf("%s",buf);
//向B发送数据
send(sockfd,buf,strlen(buf),0);
buf[strlen(buf)-1]='\0';
if(strcmp(buf,"exit") == 0)
break;
}
}
int main(int argc,char **argv)
{
int sockfd,sockfd2;
SA_IN server,addr;
IP ip;
socklen_t addrlen=sizeof(SA_IN);
char s='a';
int flags=1;
sockfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&server,sizeof(SA_IN));
server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr(SER);
server.sin_port=htons(PORT);
if(setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&flags,sizeof(int)) == -1)
perror("setsockopt sockfd");
connect(sockfd,(SA *)&server,sizeof(SA_IN));
send(sockfd,&s,sizeof(char),0);
recv(sockfd,&ip,sizeof(IP),0);
close(sockfd);
sockfd2=socket(AF_INET,SOCK_STREAM,0);
if(sockfd2 == -1)
perror("sockfd2");
if(setsockopt(sockfd2,SOL_SOCKET,SO_REUSEADDR,&flags,sizeof(int)) == -1)
perror("setsockopt sockfd2");
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=ip.port;
if(bind(sockfd2,(SA *)&server,sizeof(SA_IN)) == -1)
perror("bind sockfd");
if(listen(sockfd2,20) == -1)
perror("listen");
echo_ser(accept(sockfd2,(SA *)&addr,&addrlen));
close(sockfd2);
return 0;
}

weixin_42653672
- 粉丝: 121
最新资源
- 人工智能赋能英语专业学生网络翻译学习现状与策略.docx
- sql2java-SQL资源
- 《电子商务概论》多媒体电子教案.ppt
- 计算机二级习题-计算机二级资源
- 大数据时代数据新闻可视化初探.docx
- 计算机视觉入门项目:图像分割与增强算法代码复现实践
- 如何运用算量软件做好工程造价的预结算审核.docx
- 安工JAVA课程设计报告格式.doc
- 互联网+时代管理会计工具的新实践.docx
- 应用型电子商务专业学习课程体系建设研究.doc
- 《JAVA语言程序设计》期末考试试题及答案(题库超级大全应考必备出.doc
- 我国通信设备产量统计.docx
- Friday-毕业设计资源
- 软件工程问题的可行性研究.docx
- nuedc-resources-电赛资源
- 单片机多点湿度检测系统设计方案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论0