|
![]() | 作者: cimsxiyang [cimsxiyang]
![]() |
登录 |
我写了一个完整的例程,完成一次通讯,有兴趣的可以接着写下去,其实改一下,也就是一个后门。请各位多提意见。 ----------------------client.c------------------------ #define PORT 4500 main() { int sockfd=0; struct sockaddr_in serveraddr; for(;;) { if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { printf("socketerror"); exit(1); } serveraddr.sin_family=AF_INET; serveraddr.sin_port=htons(PORT); my_addr.sin_addr.s_addr=INADDR_ANY; bzero(&(serveraddr.sin_zero),sizeof(struct socketaddr_in)); if(connect(sockfd,&serveraddr,sizeof(serveraddr))==-1) { printf("connect error \n"); close(sockfd); } else break; } if (send(sockfd,"test \n",10,0)==-1) { printf("senderror \n"); close(sockfd); exit(1); } close(sockfd); } -------------------------server.c------------------------------ #define PORT 4500 char buff[MAXBUFSIZE] main() { int sockfd; int newsockfd; int len; struct sockaddr_in serveraddr; struct sockaddr_in clientaddr; int clinetaddrlen=sizeof(clinetaddr); if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { printf("socketerror"); exit(1); } serveraddr.sin_family=AF_INET; serveraddr.sin_port=htons(PORT); serveraddr.sin_addr.s_addr=INADDR_ANY; bzero(&(serveraddr.sin_zero),sizeof(struct socketaddr_in)); if(bind(sockfd,(struct sockaddr*)&serceraddr.sizeof((struct sockaddr)==-1) { printf("binderror"); exit(1); } listen(sockfd,8); while(1) { if ((newsockfd=accept(sockfd,(struct sockaddr*)&clientaddr,&clinetaddrlen))<0) { printf("accepterror"); continue; } printf("connection from %s ,port:%s\n",inet_ntoa(cilentaddr.sin_addr,ntohs(clientaddr.sin_port))); for(;;) { if((len=recv(newsockfd,buff,MAXBUFSIZE,0))==-1) { printf("recverror \n"); close(newsockfd); exit(0); } if((len=send(newsockfd,buff,len,0))==-1) { printf("senderror \n"); close(newsockfd); exit(0); } } } close(sockfd); } [此贴被 夕阳(cimsxiyang) 在 4月8日18时13分 编辑过] |
地主 发表时间: 4/8 18:58 |
![]() | 回复: xiaojun [xiaojun] ![]() |
登录 |
我试试看吧。 |
B1层 发表时间: 04/07 17:40 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号